Realtime Divergence for Any Indicator - By John BartleThe main purpose of this script is to show historical and real-time divergences for any oscillating indicator. The secondary purpose is to give the user a lot of precise control over identifying divergences and determining what they are. This is an improved version of my other script which is similarly called "Realtime Divergence for Any Indicator"
There are four types of divergences that are offered:
Bull divergence
Hidden bull divergence
Bear divergence
Hidden Bear divergence
There are three types of potential(real-time) divergences which include:
1) Without right side bars for rightside pivots. Plus without waiting for the rightside pivot bar to complete
2) Without right side bars for rightside pivots. Plus with waiting for the rightside pivot bar to complete
3) With right side bars for rightside pivots. Plus without waiting for the rightside pivot right-most bar to complete
A definite divergence occurs when all specified bars are accounted for and fully formed.
Potential divergences use dashed lines and definite(historical) divergences use solid lines.
In addition to several other categories of settings to filter out unwanted divergences or manipulate the search process, this script also offers Alerts. Remember that alerts must not only be set within this scripts settings but also your "Alerts" panel on your right. It's strange but BOTH must be set for alerts to work...
Other interesting Things To Know:
1)I actually don't trade and so I have no need of a paid account. Unpaid accounts don't have the playback feature so I haven't really tested this script out very well. Sorry. Just let me know if something seems off and IF I have time I'll try to fix it.
2)Keep in mind that Pinescript limits the number of lines that can be shown at one time. This means that if your settings allow for a large number of divergence lines they will be removed from the leftward side of your chart but appear in the rightward side.
3) The time and the values for the price or oscillator are not the same things as each other nor are they physical things with physical space. This means that slopes of lines using the time as X and value as Y can not have definite angles. Consequently, under the setting "DIVERGENCES: SLOPE ANGLE EXCLUSION" YOU have to decide what slope equals what angle by using the setting called "Normalization Factor".
4) Remember that some individual settings apply to both the oscillator and price chart. This means that even if the setting's conditions are fulfilled in one they may not be fulfilled in the other.
5) Under the category "DIVERGENCES: INTERSECTION ALLOWANCE", if you set the "Measurement Type" to Relative Percentage then FYI any single given length will equate to an increasingly smaller percentage the further away from zero it is. Because of this, I think "Reletive Percentage" is probably only useful for price charts or oscillators with big values. Maybe >200 is OK ?
Errors:
1) If you get the error mentioning that the script must complete execution within X amount of time, this is because this is a big script and sometimes takes longer than your service plan's allotted time limit. You can just disable some of the settings to reduce the scripts amount of work and time. The biggest time savers will be to disable some lines and labels
2) If you get an error saying the script accessed a negative index(e.g. ) then try temporarily increasing the "Add More Array Elements" setting to 100-200. Sometimes it fixes the problem.
3) You may sometimes temporarily get an error that reads: "Pine cannot determine the referencing length of a series. Try using max_bars_back in the study or strategy function".
If this happens there are several things that you can do:
3A) Create a copy of my script. Then edit the section of code that looks like this ")//, max_bars_back = INSERT_YOUR_QUANTITY_HERE)" and transform it to look like this new code ", max_bars_back = INSERT_YOUR_QUANTITY_HERE)" then repeatedly try replacing "INSERT_YOUR_QUANTITY_HERE" with an increasingly larger number greater than 244 but less than 5000.
This method will increase your system resources and could cause other problems. Try changing the code back after a few hours and see if all is well again. It is a Pinescript limitation issue and happens when certain functions or variables don't get used at least once within the first 244 bars.
3B) Adjust your settings to hopefully find a divergence within the first 244 bars. If one is found then the problematic variables or functions should get used and the Pinescript 244 bar limitation should be temporarily resolved.
3C) Wait for X number of new bars to occur. If a divergence is eventually found within the first 244 bars that should solve the issue.
Tips:
1) If the amount that a setting changes value is undesirable for each time you click it then you can change that amount in the code. To do that, you'll need your own copy of my script. To make your own copy just click on "create a working copy" in the brown colored strip area above the code. Then within approximately the first 108 lines find the title of the setting you want to change. Then look to it's right to find the parameter called "step =". Change what the step equals to whatever you want. FYI, you can hover your mouse over the blue colored code and a popup will tell you what parameters(i.e. settings) that function(e.g. "input.int()") has available.
Cari dalam skrip untuk "the script"
MTFT Full Time Frame Continuity Table TheStrat Suite(2of5)Multi Time Frame Tools
Multi Time Frame Tools (MTFT) is a suite of scripts aimed to establish a standard timeframe-based color scheme. This can be utilized to overlay different timeframes calculations/values over a single timeframe. As one example, this would allow to observe the 5-month moving average, 5-week moving average, and 5-day moving average overlaid over each other. This would allow to study a chart, get accustomed to the color scheme and study all these at the same time much easier.
All indicators calculated using the below specific timeframes as input, will always use the color scheme outlined below. This is to get you in habit of recognizing the different timeframes overlaid in top of each other. These can be personalized.
Longer TF analysis.
Yearly - Black
Semi-Annual - Yellow
Quarterly - White
Monthly - Maroon
Weekly - Royal Blue
Daily - Lime
Shorter TF analysis.
4 hour - Fuchsia
1 hour - Orange
30 min - Red
15 min - Brown
10 min - Purple
5 min - Lilac
All color coordination is able to be modified in either the “Inputs” or “Style” section. If you need to make changes, make sure to select “Save as Default” on the bottom right of the settings menu.
Recommended Chart Color Layout
I played around with color coordination a lot. The final product was what worked best for me. I personally use the following chart settings to accent all available TF colors.
-> Click on the settings wheel on your chart. -> Click on “Appearance”.
Background - Solid -> On the top row pick the 6th color from the left.
Vert Grid Lines and Horz Grid Lines -> On the top row pick the 7th color from the left.
You may of course change these and the indicator line colors as you like.
Adding indicator to Chart
-> Open the TradingView “Indicators & Strategies” library, the icon has “ƒx”. -> All premium scripts will be located under “Invite-Only Scripts” -> Click indicator to add to your chart.
MTFT TheStrat Suite (5 Scripts)
Rob Smith is the creator of ‘TheStrat’ trading strategy. For ‘TheStrat’ I have put together a suite of 5 premium scripts that combined will offer people interested in learning ‘TheStrat’ a cleaner learning process. For 2 of the 5 scripts specifically, the MTFT approach of overlaying multiple longer timeframes(TF) over a shorter TF selected as a display cannot be utilized. The other 2 scripts will have full MTFT functionality and they are my personal favorite. I will be providing very basic info to utilize this script; it is up to you to dive deep into learning this strategy. I am not an expert with the tool or a financial advisor. As with all aspects of life, I recommend you research, learn, discern and practice extensively in order to become a master.
1. MTFT Patterns Pro/Noob
*2. MTFT Full Time Frame Continuity Table
3. MTFT Last HML wOpen
4. MTFT Actionable Signal Targets
5. MTFT Reversal Lines
MTFT Full Time Frame Continuity Table, TheStrat Suite (2of5)
Full timeframe continuity observes what direction different timeframes are pointed at, red or green. This gives you a bias when evaluating a trade. Image below shows 3 instances of the script to outline the max capacity of the script.
Features includes:
1. Four user selected TFs, with 20 different TF to pick from per script instance. Timeframes(TF) include: Yearly(Y), Semi-annually(S), Quarterly(Q), Monthly(M), 2-Week(2W), Weekly(W), 3-Day(3D), Daily(D), 12 hour, 8 hour, 6 hour, 4 hour, 3 hour, 2 hour, 1 hour, 30 min, 15 min, 10 min, 5 min. The first row on the table cell will show the text for the selected timeframe.
2. Color text Green/Red timeframe based on candlestick status for the selected timeframe. Entire Table Cell text will be colored in this color. These can be customized to user preference.
3. Absolute Truth for most recently closed candlestick, plus the active candlestick. This will be displayed in the second row of the table cell. The value inside the brackets ‘ ’ is used for the previous closed candlestick. The value outside the brackets is for the active candlestick.
4. Label pattern if it’s “in force” or not. This only applies for the active candlestick absolute truth value. Note, ‘i’ means the absolute truth is in force. ‘x’ means the absolute truth is not in force.
5. Actionable Signal indication at bottom. If there is an inside candlestick, a hammer or a shooter, the script will display , , and respectively at the bottom on the third row.
6. Auto-hide Lower Timeframes. When the table cell value is smaller than the selected timeframe this timeframe will be hidden. This is done because their will be errors in calculations.
7. Customizable Table Cell Width for use in the different platforms, desktop/mobile. For desktop I use the setting.
IMPORTANT NOTE for TradingView admin: One of the lessons I would consider most important in attaining clarity regarding trading, is “TheStrat” by Rob Smith. His lesson on “actionable signals” is something that can be applied to any strategy. For this reason, I am including “MTFT TheStrat Patterns Pro” script in all images that will depict confluence for a better trade selection.
Example using TheStrat Pro MTFT with this indicator.
Look for a “TheStrat actionable signal” or a “TheStrat Reversal signal” along with this indicator showing several other larger timeframes Red/Green depending on the direction of the actionable signal.
The Image below shows what this would look like with this indicator. The selected candlestick is the Week, it shows a confirmed closed Shooting Star Actionable signal and below the table shows that the Current Week(W), Month(M), Quarter(Q), and Year(Y) are all Red. This actionable signal would be played for SHORTS. If the low is breached than you would enter a short. For targets you would look at the previous pivots, for this example all targets were hit. This wont always play out so nice and clean, but given that there is so many stocks and so many signals this is just a thought to improve the quality of the signal as it has extra confluence.
Webhook Starter Kit [HullBuster]
Introduction
This is an open source strategy which provides a framework for webhook enabled projects. It is designed to work out-of-the-box on any instrument triggering on an intraday bar interval. This is a full featured script with an emphasis on actual trading at a brokerage through the TradingView alert mechanism and without requiring browser plugins.
The source code is written in a self documenting style with clearly defined sections. The sections “communicate” with each other through state variables making it easy for the strategy to evolve and improve. This is an excellent place for Pine Language beginners to start their strategy building journey. The script exhibits many Pine Language features which will certainly ad power to your script building abilities.
This script employs a basic trend follow strategy utilizing a forward pyramiding technique. Trend detection is implemented through the use of two higher time frame series. The market entry setup is a Simple Moving Average crossover. Positions exit by passing through conditional take profit logic. The script creates ten indicators including a Zscore oscillator to measure support and resistance levels. The indicator parameters are exposed through 47 strategy inputs segregated into seven sections. All of the inputs are equipped with detailed tool tips to help you get started.
To improve the transition from simulation to execution, strategy.entry and strategy.exit calls show enhanced message text with embedded keywords that are combined with the TradingView placeholders at alert time. Thereby, enabling a single JSON message to generate multiple execution events. This is genius stuff from the Pine Language development team. Really excellent work!
This document provides a sample alert message that can be applied to this script with relatively little modification. Without altering the code, the strategy inputs can alter the behavior to generate thousands of orders or simply a few dozen. It can be applied to crypto, stocks or forex instruments. A good way to look at this script is as a webhook lab that can aid in the development of your own endpoint processor, impress your co-workers and have hours of fun.
By no means is a webhook required or even necessary to benefit from this script. The setups, exits, trend detection, pyramids and DCA algorithms can be easily replaced with more sophisticated versions. The modular design of the script logic allows you to incrementally learn and advance this script into a functional trading system that you can be proud of.
Design
This is a trend following strategy that enters long above the trend line and short below. There are five trend lines that are visible by default but can be turned off in Section 7. Identified, in frequency order, as follows:
1. - EMA in the chart time frame. Intended to track price pressure. Configured in Section 3.
2. - ALMA in the higher time frame specified in Section 2 Signal Line Period.
3. - Linear Regression in the higher time frame specified in Section 2 Signal Line Period.
4. - Linear Regression in the higher time frame specified in Section 2 Signal Line Period.
5. - DEMA in the higher time frame specified in Section 2 Trend Line Period.
The Blue, Green and Orange lines are signal lines are on the same time frame. The time frame selected should be at least five times greater than the chart time frame. The Purple line represents the trend line for which prices above the line suggest a rising market and prices below a falling market. The time frame selected for the trend should be at least five times greater than the signal lines.
Three oscillators are created as follows:
1. Stochastic - In the chart time frame. Used to enter forward pyramids.
2. Stochastic - In the Trend period. Used to detect exit conditions.
3. Zscore - In the Signal period. Used to detect exit conditions.
The Stochastics are configured identically other than the time frame. The period is set in Section 2.
Two Simple Moving Averages provide the trade entry conditions in the form of a crossover. Crossing up is a long entry and down is a short. This is in fact the same setup you get when you select a basic strategy from the Pine editor. The crossovers are configured in Section 3. You can see where the crosses are occurring by enabling Show Entry Regions in Section 7.
The script has the capacity for pyramids and DCA. Forward pyramids are enabled by setting the Pyramid properties tab with a non zero value. In this case add on trades will enter the market on dips above the position open price. This process will continue until the trade exits. Downward pyramids are available in Crypto and Range mode only. In this case add on trades are placed below the entry price in the drawdown space until the stop is hit. To enable downward pyramids set the Pyramid Minimum Span In Section 1 to a non zero value.
This implementation of Dollar Cost Averaging (DCA) triggers off consecutive losses. Each loss in a run increments a sequence number. The position size is increased as a multiple of this sequence. When the position eventually closes at a profit the sequence is reset. DCA is enabled by setting the Maximum DCA Increments In Section 1 to a non zero value.
It should be noted that the pyramid and DCA features are implemented using a rudimentary design and as such do not perform with the precision of my invite only scripts. They are intended as a feature to stress test your webhook endpoint. As is, you will need to buttress the logic for it to be part of an automated trading system. It is for this reason that I did not apply a Martingale algorithm to this pyramid implementation. But, hey, it’s an open source script so there is plenty of room for learning and your own experimentation.
How does it work
The overall behavior of the script is governed by the Trading Mode selection in Section 1. It is the very first input so you should think about what behavior you intend for this strategy at the onset of the configuration. As previously discussed, this script is designed to be a trend follower. The trend being defined as where the purple line is predominately heading. In BiDir mode, SMA crossovers above the purple line will open long positions and crosses below the line will open short. If pyramiding is enabled add on trades will accumulate on dips above the entry price. The value applied to the Minimum Profit input in Section 1 establishes the threshold for a profitable exit. This is not a hard number exit. The conditional exit logic must be satisfied in order to permit the trade to close. This is where the effort put into the indicator calibration is realized. There are four ways the trade can exit at a profit:
1. Natural exit. When the blue line crosses the green line the trade will close. For a long position the blue line must cross under the green line (downward). For a short the blue must cross over the green (upward).
2. Alma / Linear Regression event. The distance the blue line is from the green and the relative speed the cross is experiencing determines this event. The activation thresholds are set in Section 6 and relies on the period and length set in Section 2. A long position will exit on an upward thrust which exceeds the activation threshold. A short will exit on a downward thrust.
3. Exponential event. The distance the yellow line is from the blue and the relative speed the cross is experiencing determines this event. The activation thresholds are set in Section 3 and relies on the period and length set in the same section.
4. Stochastic event. The purple line stochastic is used to measure overbought and over sold levels with regard to position exits. Signal line positions combined with a reading over 80 signals a long profit exit. Similarly, readings below 20 signal a short profit exit.
Another, optional, way to exit a position is by Bale Out. You can enable this feature in Section 1. This is a handy way to reduce the risk when carrying a large pyramid stack. Instead of waiting for the entire position to recover we exit early (bale out) as soon as the profit value has doubled.
There are lots of ways to implement a bale out but the method I used here provides a succinct example. Feel free to improve on it if you like. To see where the Bale Outs occur, enable Show Bale Outs in Section 7. Red labels are rendered below each exit point on the chart.
There are seven selectable Trading Modes available from the drop down in Section 1:
1. Long - Uses the strategy.risk.allow_entry_in to execute long only trades. You will still see shorts on the chart.
2. Short - Uses the strategy.risk.allow_entry_in to execute short only trades. You will still see long trades on the chart.
3. BiDir - This mode is for margin trading with a stop. If a long position was initiated above the trend line and the price has now fallen below the trend, the position will be reversed after the stop is hit. Forward pyramiding is available in this mode if you set the Pyramiding value in the Properties tab. DCA can also be activated.
4. Flip Flop - This is a bidirectional trading mode that automatically reverses on a trend line crossover. This is distinctively different from BiDir since you will get a reversal even without a stop which is advantageous in non-margin trading.
5. Crypto - This mode is for crypto trading where you are buying the coins outright. In this case you likely want to accumulate coins on a crash. Especially, when all the news outlets are talking about the end of Bitcoin and you see nice deep valleys on the chart. Certainly, under these conditions, the market will be well below the purple line. No margin so you can’t go short. Downward pyramids are enabled for Crypto mode when two conditions are met. First the Pyramiding value in the Properties tab must be non zero. Second the Pyramid Minimum Span in Section 1 must be non zero.
6. Range - This is a counter trend trading mode. Longs are entered below the purple trend line and shorts above. Useful when you want to test your webhook in a market where the trend line is bisecting the signal line series. Remember that this strategy is a trend follower. It’s going to get chopped out in a range bound market. By turning on the Range mode you will at least see profitable trades while stuck in the range. However, when the market eventually picks a direction, this mode will sustain losses. This range trading mode is a rudimentary implementation that will need a lot of improvement if you want to create a reliable switch hitter (trend/range combo).
7. No Trade. Useful when setting up the trend lines and the entry and exit is not important.
Once in the trade, long or short, the script tests the exit condition on every bar. If not a profitable exit then it checks if a pyramid is required. As mentioned earlier, the entry setups are quite primitive. Although they can easily be replaced by more sophisticated algorithms, what I really wanted to show is the diminished role of the position entry in the overall life of the trade. Professional traders spend much more time on the management of the trade beyond the market entry. While your trade entry is important, you can get in almost anywhere and still land a profitable exit.
If DCA is enabled, the size of the position will increase in response to consecutive losses. The number of times the position can increase is limited by the number set in Maximum DCA Increments of Section 1. Once the position breaks the losing streak the trade size will return the default quantity set in the Properties tab. It should be noted that the Initial Capital amount set in the Properties tab does not affect the simulation in the same way as a real account. In reality, running out of money will certainly halt trading. In fact, your account would be frozen long before the last penny was committed to a trade. On the other hand, TradingView will keep running the simulation until the current bar even if your funds have been technically depleted.
Entry and exit use the strategy.entry and strategy.exit calls respectfully. The alert_message parameter has special keywords that the endpoint expects to properly calculate position size and message sequence. The alert message will embed these keywords in the JSON object through the {{strategy.order.alert_message}} placeholder. You should use whatever keywords are expected from the endpoint you intend to webhook in to.
Webhook Integration
The TradingView alerts dialog provides a way to connect your script to an external system which could actually execute your trade. This is a fantastic feature that enables you to separate the data feed and technical analysis from the execution and reporting systems. Using this feature it is possible to create a fully automated trading system entirely on the cloud. Of course, there is some work to get it all going in a reliable fashion. Being a strategy type script place holders such as {{strategy.position_size}} can be embedded in the alert message text. There are more than 10 variables which can write internal script values into the message for delivery to the specified endpoint.
Entry and exit use the strategy.entry and strategy.exit calls respectfully. The alert_message parameter has special keywords that my endpoint expects to properly calculate position size and message sequence. The alert message will embed these keywords in the JSON object through the {{strategy.order.alert_message}} placeholder. You should use whatever keywords are expected from the endpoint you intend to webhook in to.
Here is an excerpt of the fields I use in my webhook signal:
"broker_id": "kraken",
"account_id": "XXX XXXX XXXX XXXX",
"symbol_id": "XMRUSD",
"action": "{{strategy.order.action}}",
"strategy": "{{strategy.order.id}}",
"lots": "{{strategy.order.contracts}}",
"price": "{{strategy.order.price}}",
"comment": "{{strategy.order.alert_message}}",
"timestamp": "{{time}}"
Though TradingView does a great job in dispatching your alert this feature does come with a few idiosyncrasies. Namely, a single transaction call in your script may cause multiple transmissions to the endpoint. If you are using placeholders each message describes part of the transaction sequence. A good example is closing a pyramid stack. Although the script makes a single strategy.close() call, the endpoint actually receives a close message for each pyramid trade. The broker, on the other hand, only requires a single close. The incongruity of this situation is exacerbated by the possibility of messages being received out of sequence. Depending on the type of order designated in the message, a close or a reversal. This could have a disastrous effect on your live account. This broker simulator has no idea what is actually going on at your real account. Its just doing the job of running the simulation and sending out the computed results. If your TradingView simulation falls out of alignment with the actual trading account lots of really bad things could happen. Like your script thinks your are currently long but the account is actually short. Reversals from this point forward will always be wrong with no one the wiser. Human intervention will be required to restore congruence. But how does anyone find out this is occurring? In closed systems engineering this is known as entropy. In practice your webhook logic should be robust enough to detect these conditions. Be generous with the placeholder usage and give the webhook code plenty of information to compare states. Both issuer and receiver. Don’t blindly commit incoming signals without verifying system integrity.
Setup
The following steps provide a very brief set of instructions that will get you started on your first configuration. After you’ve gone through the process a couple of times, you won’t need these anymore. It’s really a simple script after all. I have several example configurations that I used to create the performance charts shown. I can share them with you if you like. Of course, if you’ve modified the code then these steps are probably obsolete.
There are 47 inputs divided into seven sections. For the most part, the configuration process is designed to flow from top to bottom. Handy, tool tips are available on every field to help get you through the initial setup.
Step 1. Input the Base Currency and Order Size in the Properties tab. Set the Pyramiding value to zero.
Step 2. Select the Trading Mode you intend to test with from the drop down in Section 1. I usually select No Trade until I’ve setup all of the trend lines, profit and stop levels.
Step 3. Put in your Minimum Profit and Stop Loss in the first section. This is in pips or currency basis points (chart right side scale). Remember that the profit is taken as a conditional exit not a fixed limit. The actual profit taken will almost always be greater than the amount specified. The stop loss, on the other hand, is indeed a hard number which is executed by the TradingView broker simulator when the threshold is breached.
Step 4. Apply the appropriate value to the Tick Scalar field in Section 1. This value is used to remove the pipette from the price. You can enable the Summary Report in Section 7 to see the TradingView minimum tick size of the current chart.
Step 5. Apply the appropriate Price Normalizer value in Section 1. This value is used to normalize the instrument price for differential calculations. Basically, we want to increase the magnitude to significant digits to make the numbers more meaningful in comparisons. Though I have used many normalization techniques, I have always found this method to provide a simple and lightweight solution for less demanding applications. Most of the time the default value will be sufficient. The Tick Scalar and Price Normalizer value work together within a single calculation so changing either will affect all delta result values.
Step 6. Turn on the trend line plots in Section 7. Then configure Section 2. Try to get the plots to show you what’s really happening not what you want to happen. The most important is the purple trend line. Select an interval and length that seem to identify where prices tend to go during non-consolidation periods. Remember that a natural exit is when the blue crosses the green line.
Step 7. Enable Show Event Regions in Section 7. Then adjust Section 6. Blue background fills are spikes and red fills are plunging prices. These measurements should be hard to come by so you should see relatively few fills on the chart if you’ve set this up as intended. Section 6 includes the Zscore oscillator the state of which combines with the signal lines to detect statistically significant price movement. The Zscore is a zero based calculation with positive and negative magnitude readings. You want to input a reasonably large number slightly below the maximum amplitude seen on the chart. Both rise and fall inputs are entered as a positive real number. You can easily use my code to create a separate indicator if you want to see it in action. The default value is sufficient for most configurations.
Step 8. Turn off Show Event Regions and enable Show Entry Regions in Section 7. Then adjust Section 3. This section contains two parts. The entry setup crossovers and EMA events. Adjust the crossovers first. That is the Fast Cross Length and Slow Cross Length. The frequency of your trades will be shown as blue and red fills. There should be a lot. Then turn off Show Event Regions and enable Display EMA Peaks. Adjust all the fields that have the word EMA. This is actually the yellow line on the chart. The blue and red fills should show much less than the crossovers but more than event fills shown in Step 7.
Step 9. Change the Trading Mode to BiDir if you selected No Trades previously. Look on the chart and see where the trades are occurring. Make adjustments to the Minimum Profit and Stop Offset in Section 1 if necessary. Wider profits and stops reduce the trade frequency.
Step 10. Go to Section 4 and 5 and make fine tuning adjustments to the long and short side.
Example Settings
To reproduce the performance shown on the chart please use the following configuration: (Bitcoin on the Kraken exchange)
1. Select XBTUSD Kraken as the chart symbol.
2. On the properties tab set the Order Size to: 0.01 Bitcoin
3. On the properties tab set the Pyramiding to: 12
4. In Section 1: Select “Crypto” for the Trading Model
5. In Section 1: Input 2000 for the Minimum Profit
6. In Section 1: Input 0 for the Stop Offset (No Stop)
7. In Section 1: Input 10 for the Tick Scalar
8. In Section 1: Input 1000 for the Price Normalizer
9. In Section 1: Input 2000 for the Pyramid Minimum Span
10. In Section 1: Check mark the Position Bale Out
11. In Section 2: Input 60 for the Signal Line Period
12. In Section 2: Input 1440 for the Trend Line Period
13. In Section 2: Input 5 for the Fast Alma Length
14. In Section 2: Input 22 for the Fast LinReg Length
15. In Section 2: Input 100 for the Slow LinReg Length
16. In Section 2: Input 90 for the Trend Line Length
17. In Section 2: Input 14 Stochastic Length
18. In Section 3: Input 9 Fast Cross Length
19. In Section 3: Input 24 Slow Cross Length
20. In Section 3: Input 8 Fast EMA Length
21. In Section 3: Input 10 Fast EMA Rise NetChg
22. In Section 3: Input 1 Fast EMA Rise ROC
23. In Section 3: Input 10 Fast EMA Fall NetChg
24. In Section 3: Input 1 Fast EMA Fall ROC
25. In Section 4: Check mark the Long Natural Exit
26. In Section 4: Check mark the Long Signal Exit
27. In Section 4: Check mark the Long Price Event Exit
28. In Section 4: Check mark the Long Stochastic Exit
29. In Section 5: Check mark the Short Natural Exit
30. In Section 5: Check mark the Short Signal Exit
31. In Section 5: Check mark the Short Price Event Exit
32. In Section 5: Check mark the Short Stochastic Exit
33. In Section 6: Input 120 Rise Event NetChg
34. In Section 6: Input 1 Rise Event ROC
35. In Section 6: Input 5 Min Above Zero ZScore
36. In Section 6: Input 120 Fall Event NetChg
37. In Section 6: Input 1 Fall Event ROC
38. In Section 6: Input 5 Min Below Zero ZScore
In this configuration we are trading in long only mode and have enabled downward pyramiding. The purple trend line is based on the day (1440) period. The length is set at 90 days so it’s going to take a while for the trend line to alter course should this symbol decide to node dive for a prolonged amount of time. Your trades will still go long under those circumstances. Since downward accumulation is enabled, your position size will grow on the way down.
The performance example is Bitcoin so we assume the trader is buying coins outright. That being the case we don’t need a stop since we will never receive a margin call. New buy signals will be generated when the price exceeds the magnitude and speed defined by the Event Net Change and Rate of Change.
Feel free to PM me with any questions related to this script. Thank you and happy trading!
CFTC RULE 4.41
These results are based on simulated or hypothetical performance results that have certain inherent limitations. Unlike the results shown in an actual performance record, these results do not represent actual trading. Also, because these trades have not actually been executed, these results may have under-or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated or hypothetical trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profits or losses similar to these being shown.
WWV_LB pivotfix histogram jayy
This is a modification of LazyBear's WWV_LB which plots cumulative volume of waves. The reversal points are defined through relative closing prices. I made adjustments to the script to show waves turning on actual/true low or high pivots as opposed to the bar/candle identified in the LazyBear script. What I mean by that is that the actual/true low or high pivots are in fact the true WWV_LB pivots. The original WWV_LB script calculates cumulative volume from reversal confirmation bar to reversal confirmation bar as opposed to the true WWV_LB pivot bar to pivot bar. As such the waves can have slightly different start and end points. As such the cumulative volume can also be different from te WWV_LB script. This is because confirmation of a wave reversal can lag a few bars after the true reversal pivot bar. In the script notes, you will see the original key WWV_LB script lines that identify the true high or low pivots and confirm the wave direction has reversed. I have taken these lines from LazyBear's original script. I have included the LazyBear script within the script notes so that the original can be compared to what I have added/changed. Instead of "trendDetectionLength" I have inserted "Trend Detection Length". You can of course change the descriptor to what you wish by editing script line 33 to the original term or whatever you wish. You might also wish to set the default to the value "2" as per the original script. I have set the default to "3". This script should be used in conjunction with "WWV-LB zigzag pivot fix jayy" script which is shown on this screen for comparison.
Here is a link to the original LazyBear histogram script which can be used for comparison. The differences are subtle, however, the histograms will regularly be different by a bar or two:
The lowest panel has the original LazyBear WWV_LB script for comparison. All three scripts have been set to a Trend Detection Length of 3.jayy
All Instrument Swing Trader with Pyramids, DCA and Leverage
Introduction
This is my most advanced Pine 4 script so far. It combines my range trader algorithms with my trend following pyramids all on a single interval. This script includes my beta tested DCA feature along with simulated leverage and buying power calculations. It has a twin study with several alerts. The features in this script allow you to experiment with different risk strategies and evaluate the approximate impact on your account capital. The script is flexible enough to run on instruments from different markets and at various bar intervals. This strategy can be run in three different modes: long, short and bidirectional. The bidirectional mode has two split modes (Ping Pong and BiDir). It also generates a summary report label with information not available in the TradingView Performance report such as Rate Of Return Standard Deviation and other Sharpe Ratio input values. Notable features include the following:
- Swing Trading Paradigm
- Uni or Bidirectional trading modes
- Calculation presets for Crypto, Stocks and Forex
- Conditional Minimum Profit
- Hard stop loss field
- Two types of DCA (Positive and Negative)
- Discretionary Pyramid levels with threshold adjustment and limiter
- Consecutive loss counter with preset and label
- Reentry loss limiter and trade entry caution fields
- Simulated Leverage and margin call warning label (approximation only)
- Buying power report labels (approximation only)
- Rate Of Return report with input values for Sharpe Ratio, Sortino and others
- Summary report label with real-time status indicators
- Trend follow bias modes (Its still range trading)
- Six anti-chop settings
- Single interval strategy to reduce repaint occurrence
This is a swing trading strategy so the behavior of this script is to buy on weakness and sell on strength. As such trade orders are placed in a counter direction to price pressure. What you will see on the chart is a short position on peaks and a long position on valleys. Just to be clear, the range as well as trends are merely illusions as the chart only receives prices. However, this script attempts to calculate pivot points from the price stream. Rising pivots are shorts and falling pivots are longs. I refer to pivots as a vertex in this script which adds structural components to the chart formation (point, sides and a base). When trading in “Ping Pong” mode long and short positions are intermingled continuously as long as there exists a detectable vertex. Unfortunately, this can work against your backtest profitability on long duration trends where prices continue in a single direction without pullback. I have designed various features in the script to compensate for this event. A well configured script should perform in a range bound market and minimize losses in a trend. For a range trader the trend is most certainly not your friend. I also have a trend following version of this script for those not interested in trading the range.
This script makes use of the TradingView pyramid feature accessible from the properties tab. Additional trades can be placed in the draw-down space increasing the position size and thereby increasing the profit or loss when the position finally closes. Each individual add on trade increases its order size as a multiple of its pyramid level. This makes it easy to comply with NFA FIFO Rule 2-43(b) if the trades are executed here in America. The inputs dialog box contains various settings to adjust where the add on trades show up, under what circumstances and how frequent if at all. Please be advised that pyramiding is an advanced feature and can wipe out your account capital if your not careful. You can use the “Performance Bond Leverage” feature to stress test your account capital with varying pyramid levels during the backtest. Use modest settings with realistic capital until you discover what you think you can handle. See the“Performance Bond Leverage” description for more information.
In addition to pyramiding this script employs DCA which enables users to experiment with loss recovery techniques. This is another advanced feature which can increase the order size on new trades in response to stopped out or winning streak trades. The script keeps track of debt incurred from losing trades. When the debt is recovered the order size returns to the base amount specified in the TV properties tab. The inputs for this feature include a limiter to prevent your account from depleting capital during runaway markets. The main difference between DCA and pyramids is that this implementation of DCA applies to new trades while pyramids affect open positions. DCA is a popular feature in crypto trading but can leave you with large “bags” if your not careful. In other markets, especially margin trading, you’ll need a well funded account and much experience.
To be sure pyramiding and dollar cost averaging is as close to gambling as you can get in respectable trading exchanges. However, if you are looking to compete in a Forex contest or want to add excitement to your trading life style those features could find a place in your strategies. Although your backtest may show spectacular gains don’t expect your live trading account to do the same. Every backtest has some measure to data mining bias. Please remember that.
This script is equipped with a consecutive loss counter. A limit field is provided in the report section of the input dialog box. This is a whole number value that, when specified, will generate a label on the chart when consecutive losses exceed the threshold. Every stop hit beyond this limit will be reported on a version 4 label above the bar where the stop is hit. Use the location of the labels along with the summary report tally to improve the adaptability of system. Don’t simply fit the chart. A good trading system should adapt to ever changing market conditions. On the study version the consecutive loss limit can be used to halt live trading on the broker side (managed manually).
This script can simulate leverage applied to your account capital. Basically, you want to know if the account capital you specified in the properties tab is sufficient to trade this script with the order size, pyramid and DCA parameters needed. TradingView does not halt trading when the account capital is depleted nor do you receive notification of such an event. Input the leverage you intend to trade with and simulate the stress on your account capital. When the check box labeled “Report Margin Call” is enabled a marker will plot on the chart at the location where the threshold was breached. Additionally, the Summary Report will indicated such a breach has occurred during the backtest. Please note that the margin calculation uses a performance bond contract model which is the same type of leverage applied to Forex accounts. This is not the same leverage as stock margin accounts since shares are not actually borrowed. It is also not applicable to futures contracts since we do not calculate maintenance margin. Also note that the account margin and buying power are calculated using the U.S. Dollar as a funding currency. Margin rules across the globe vary considerably so use this feature as an approximation. The “Report Margin Call” plot only appears on negative buying power which is well beyond the NFA enforced margin closeout price. Vary the order size and account capital and activate the buying power plot to get as close as you can to the desired margin call threshold. Also keep in mind that rollover fees, commissions, spreads, etc affect the margin call in actual live trading. This feature does not include any of those costs.
Inputs
The script input dialog box is divided into five sections. The last section, Section 5, contains all of the script reporting options. Notable reporting options are the inputs which provide support for calculating actual Sharpe Ratios and other risk / performance metrics. The TradingView performance report does not produce a scalable Sharpe Ratio which is unfortunate considering the limited data supplied to the backtest. Three report fields made available in this section are intended to enable users to measure the performance of this script using various industry standard risk metrics. In particular, The Sharpe Ratio, Sortino Ratio, Alpha Calculation, Beta Calculation, R-Squared and Monthly Standard Deviation. The following fields are dedicated to this effort:
– ROR Sample Period - Integer number which specifies the rate of return period. This number is a component of the Sharpe Ratio and determines the number of sample periods divisible in the chart data. The number specified here is the length of the period measured in bar intervals. Since the quantity of TradingView historical data is limited this number should reflect the scalar value applied to your Sharpe calculation. When the checkbox “Report Period ROR” is enabled red boxes plot on the dates corresponding to the ROR sample period. The red boxes display information useful in calculating various risk and performance models. Ongoing buying power is included in the period report which is especially useful in assessing the DCA stress on account capital. Important: When the “ROR Sample Period” is specified the script computes the ROR mean value and displays the result in the summary report label on the live end of the chart. Use this number to calculate the historical standard deviation of period returns.
– Return Mean Value - This is the ROR mean value which is displayed in the summary report field “ROR Mean”. Enter the value shown in the summary report here in order to calculate the standard deviation of returns. Once calculated the result is displayed in the summary report field “Standard Dev”. Please note that ROR and standard deviation are calculated on the quote currency of the chart and not the account currency. If you intend to calculate risk metrics based on other denominated returns use the period calculations in a spreadsheet. Important: Do not change the account denomination on the properties tab simply to force a dollar calculation. It will alter the backtest itself since the minimum profit, stop-loss and other variables are always measured in the quote currency of the chart.
– Report Period ROR - This checkbox is used to display the ROR period report which plots a red label above the bars corresponding to the ROR sample period. The sample period is defined by the value entered into the “ROR Sample Period” field. This checkbox only determines if the period labels plot on the chart. It does not enable or disable the ROR calculation itself. Please see input description“ROR Sample Period” for a detailed description of this feature.
Design
This script uses twelve indicators on a single time frame. The original trading algorithms are a port from a much larger program on another trading platform. I’ve converted some of the statistical functions to use standard indicators available on TradingView. The setups make heavy use of the Hull Moving Average in conjunction with EMAs that form the Bill Williams Alligator as described in his book “New Trading Dimensions” Chapter 3. Lag between the Hull and the EMAs form the basis of the entry and exit points. The vertices are calculated using one of five featured indicators. Each indicator is actually a composite of calculations which produce a distinct mean. This mathematical distinction enables the script to be useful on various instruments which belong to entirely different markets. In other words, at least one of these indicators should be able generate pivots on an arbitrarily selected instrument. Try each one to find the best fit.
The entire script is around 2200 lines of Pine code which pushes the limits of what can be created on this platform given the TradingView maximums for: local scopes, run-time duration and compile time. This script incorporates code from both my range trader and trend following published programs. Both have been in development for nearly two years and have been in beta test for the last several months. During the beta test of the range trading script it was discovered that by widening the stop and delaying the entry, add on trading opportunities appeared on the chart. I determined that by sacrificing a few minor features code space could be made available for pyramiding capability in the range trader. The module has been through several refactoring passes and makes extensive use of ternary statements. As such, It takes a full three minutes to compile after adding it to a chart. Please wait for the hovering dots to disappear before attempting to bring up the input dialog box. For the most part the same configuration settings for the range script can be applied to this script.
Inputs to the script use cone centric measurements in effort to avoid exposing adjustments to the various internal indicators. The goal was to keep the inputs relevant to the actual trade entry and exit locations as opposed to a series of MA input values and the like. As a result the strategy exposes over 70 inputs grouped into long or short sections. Inputs are available for the usual minimum profit and stop-loss as well as safeguards, trade frequency, pyramids, DCA, modes, presets, reports and lots of calibrations. The inputs are numerous, I know. Unfortunately, at this time, TradingView does not offer any other method to get data in the script. The usual initialization files such as cnf, cfg, ini, json and xml files are currently unsupported.
I have several example configuration settings that I use for my own trading. They include cryptocurrencies and forex instruments on various time frames.
Indicator Repainting and Anomalies
Indicator repainting is an industry wide problem which mainly occurs when you mix backtest data with real-time data. It doesn't matter which platform you use some form of this condition will manifest itself on your chart over time. The critical aspect being whether live trades on your broker’s account continue to match your TradingView study.
Based on my experience with Pine, most of the problems stem from TradingView’s implementation of multiple interval access. Whereas most platforms provide a separate bar series for each interval requested, the Pine language interleaves higher time frames with the primary chart interval. The problem is exacerbated by allowing a look-ahead parameter to the Security function. The goal of my repaint prevention is simply to ensure that my signal trading bias remains consistent between the strategy, study and broker. That being said this is what I’ve done address this issue in this script:
1. This script uses only 1 time frame. The chart interval.
2. Every entry and exit condition is evaluated on closed bars only.
3. No security functions are called to avoid a look-ahead possibility.
4. Every contributing factor specified in the TradingView wiki regarding this issue has been addressed.
5. Entry and exit setups are not reliant on crossover conditions.
6. I’ve run a 10 minute chart live for a week and compared it to the same chart periodically reloaded. The two charts were highly correlated with no instances of completely opposite real-time signals. I do have to say that there were differences in the location of some trades between the backtest and the study. But, I think mostly those differences are attributable to trading off closed bars in the study and the use of strategy functions in the backtest.
The study does indeed bring up the TV warning dialog. The only reason for this is because the script uses an EMA indicator which according to TradingView is due to “peculiarities of the algorithm”. I use the EMA for the Bill Williams Alligator so there is no way to remove it.
One issue that comes up when comparing the strategy with the study is that the strategy trades show on the chart one bar later than the study. This problem is due to the fact that “strategy.entry()” and “strategy_exit()” do not execute on the same bar called. The study, on the other hand, has no such limitation since there are no position routines.
Please be aware that the data source matters. Cryptocurrency has no central tick repository so each exchange supplies TradingView its feed. Even though it is the same symbol the quality of the data and subsequently the bars that are supplied to the chart varies with the exchange. This script will absolutely produce different results on different data feeds of the same symbol. Be sure to backtest this script on the same data you intend to receive alerts for. Any example settings I share with you will always have the exchange name used to generate the test results.
Usage
The following steps provide a very brief set of instructions that will get you started but will most certainly not produce the best backtest. A trading system that you are willing to risk your hard earned capital will require a well crafted configuration that involves time, expertise and clearly defined goals. As previously mentioned, I have several example configs that I use for my own trading that I can share with you. To get hands on experience in setting up your own symbol from scratch please follow the steps below.
The input dialog box contains over 70 inputs separated into five sections. Each section is identified as such with a makeshift separator input. There are three main areas that must to be configured: long side, short side and settings that apply to both. The rest of the inputs apply to pyramids, DCA, reporting and calibrations. The following steps address these three main areas only. You will need to get your backtest in the black before moving on to the more advanced features.
Step 1. Setup the Base currency and order size in the properties tab.
Step 2. Select the calculation presets in the Instrument Type field.
Step 3. Select “No Trade” in the Trading Mode field.
Step 4. Select the Histogram indicator from Section 2. You will be experimenting with different ones so it doesn’t matter which one you try first.
Step 5. Turn on Show Markers in Section 2.
Step 6. Go to the chart and checkout where the markers show up. Blue is up and red is down. Long trades show up along the red markers and short trades on the blue.
Step 7. Make adjustments to “Base To Vertex” and “Vertex To Base” net change and roc in Section 3. Use these fields to move the markers to where you want trades to be.
Step 8. Try a different indicator from Section 2 and repeat Step 7 until you find the best match for this instrument on this interval. This step is complete when the Vertex settings and indicator combination produce the most favorable results.
Step 9. Go to Section 3 and enable “Apply Red Base To Base Margin”.
Step 10. Go to Section 4 and enable “Apply Blue Base To Base Margin”.
Step 11. Go to Section 2 and adjust “Minimum Base To Base Blue” and “Minimum Base To Base Red”. Observe the chart and note where the markers move relative to each other. Markers further apart will produce less trades but will reduce cutoffs in “Ping Pong” mode.
Step 12. Return to Section 3 and 4 and turn off “Base To Base Margin” which was enabled in steps 9 and 10.
Step 13. Turn off Show Markers in Section 2.
Step 14. Put in your Minimum Profit and Stop Loss in the first section. This is in pips or currency basis points (chart right side scale). Percentage is not currently supported. This is a fixed value minimum profit and stop loss. Also note that the profit is taken as a conditional exit on a market order not a fixed limit. The actual profit taken will almost always be greater than the amount specified (due to the exit condition). The stop loss, on the other hand, is indeed a hard number which is executed by the TradingView broker simulator when the threshold is breached. On the study version, the stop is executed at the close of the bar.
Step 15. Return to step 3 and select a Trading Mode (Long, Short, BiDir, Ping Pong). If you are planning to trade bidirectionally its best to configure long first then short. Combine them with “BiDir” or “Ping Pong” after setting up both sides of the trade individually. The difference between “BiDir” and “Ping Pong” is that “Ping Pong” uses position reversal and can cut off opposing trades less than the specified minimum profit. As a result “Ping Pong” mode produces the greatest number of trades.
Step 16. Take a look at the chart. Trades should be showing along the markers plotted earlier.
Step 17. Make adjustments to the Vertex fields in Section 2 until the TradingView performance report is showing a profit. This includes the “Minimum Base To Base” fields. If a profit cannot be achieved move on to Step 18. Other adjustments may make a crucial difference.
Step 18. Improve the backtest profitability by adjusting the “Entry Net Change” and “Entry ROC” in Section 3 and 4.
Step 19. Enable the “Mandatory Snap” checkbox in Section 3 and 4 and adjust the “Snap Candle Delta” and “Snap Fractal Delta” in Section 2. This should reduce some chop producing unprofitable reversals.
Step 20. Increase the distance between opposing trades by adding an “Interleave Delta” in Sections 3 and 4. This is a floating point value which starts at 0.01 and typically does not exceed 2.0.
Step 21. Increase the distance between opposing trades even further by adding a “Decay Minimum Span” in Sections 3 and 4. This is an absolute value specified in the symbol’s quote currency (right side scale of the chart). This value is similar to the minimum profit and stop loss fields in Section 1.
Step 22. Improve the backtest profitability by adjusting the “Sparse Delta” in Section 3 and 4.
Step 23. Improve the backtest profitability by adjusting the “Chase Delta” in Section 3 and 4.
Step 24. Improve the backtest profitability by adjusting the “Adherence Delta” in Section 3 and 4. This field requires the “Adhere to Rising Trend” checkbox to be enabled.
Step 25. Try each checkbox in Section 3 and 4. See if it improves the backtest profitability. The “Caution Lackluster” checkbox only works when “Caution Mode” is enabled.
Step 26. Enable the reporting conditions in Section 5. Look for long runs of consecutive losses or high debt sequences. These are indications that your trading system cannot withstand sudden changes in market sentiment.
Step 27. Examine the chart and see that trades are being placed in accordance with your desired trading goals. This is an important step. If your desired model requires multiple trades per day then you should be seeing hundreds of trades on the chart. Alternatively, you may be looking to trade fewer steep peaks and deep valleys in which case you should see trades at major turning points. Don’t simply settle for what the backtest serves you. Work your configuration until the system aligns with your desired model. Try changing indicators and even intervals if you cannot reach your simulation goals. Generally speaking, the histogram and Candle indicators produce the most trades. The Macro indicator captures the tallest peaks and valleys.
Step 28. Apply the backtest settings to the study version and perform forward testing.
This script is open for beta testing. After successful beta test it will become a commercial application available by subscription only. I’ve invested quite a lot of time and effort into making this the best possible signal generator for all of the instruments I intend to trade. I certainly welcome any suggestions for improvements. Thank you all in advance.
One final note. I'm not a fan of having the Performance Overview (blue wedge) automatically show up at the end of the publish page since it could be misleading. On the EUR/USD backtest showing here I used a minimum profit of 65 pips, a stop of 120 pips, the candle indicator and a 5 pyramid max value. Also Mark Pyramid Levels (blue triangles) are enabled along with a 720 ROR Sample Period (red labels).
EasyBee59 v1.0EasyBee59 v1.0 for TradingView does tedious CC59 counting for you automatically in your investment chart. It then creates respectable support and resistance levels based on CC59 counting results as well as marks and reminds you about important parameters that are happening so that you would not forget to consider them before placing trade orders. The events occur in the chart can be set to send server-side alerts to your smart phone so that you don't have to stay in front of the screen all the time.
=================================================================================================
The source code of EasyBee59 v1.0 for TradingView is protected. Only invited TradingView members can access and use this script.
Lifetime invitation to use it is for 100 USD with free future upgrades and online supports. Paypal, bank transfer and bitcoin payments are welcome.
For more informaton please contact the author (DrGraph or Nimit Chomnawang, PhD) via TradingView private chat
or in the comment field below.
=================================================================================================
How to install the script:
------------------------------
*Go to the bottom of this page and click on "Add to Favorite Scripts".
*Remove older version of the script by clicking on the "X" button behind the indicator line at the top left corner of the chart window.
*Open a new chart at and click on the "Indicators" tab.
*Click on the "Favorites" tab and choose "EasyBee59 v1.0".
*Right click anywhere on the graph, choose "Color Theme", the select "Dark".
*Right click anywhere on the graph, choose "Settings".
*In "Symbol" tab, set "Precesion" to 1/100 for stock price or 1/100000 for forex and set "Time Zone" to your local time.
*In "Status line" tab, uncheck "Indicator Arguments" and "Indicator Values".
*In "Events" tab, check "Show Dividends on Chart", "Show Splits on Chart" and "Show Earnings on Chart".
*At the bottom of settings window, click on "Template", "Save As...", then name this theme of graph setting for future call up such as "DrGraph chart setting".
*Click OK.
For free TradingView plan, you can add two more indicators to the chart. That means you may add Stoch and Vol indicators with same parameters as those setup in EasyBee59 to your graph. DrGraph regularly publishes his educational ideas on using features provided in EasyBee59 for profitable investments. You can follow him for how to use the tools in trading stocks, forex, and crypto currencies.
Ensemble Alerts█ OVERVIEW
This indicator creates highly customizable alert conditions and messages by combining several technical conditions into groups , which users can specify directly from the "Settings/Inputs" tab. It offers a flexible framework for building and testing complex alert conditions without requiring code modifications for each adjustment.
█ CONCEPTS
Ensemble analysis
Ensemble analysis is a form of data analysis that combines several "weaker" models to produce a potentially more robust model. In a trading context, one of the most prevalent forms of ensemble analysis is the aggregation (grouping) of several indicators to derive market insights and reinforce trading decisions. With this analysis, traders typically inspect multiple indicators, signaling trade actions when specific conditions or groups of conditions align.
Simplifying ensemble creation
Combining indicators into one or more ensembles can be challenging, especially for users without programming knowledge. It usually involves writing custom scripts to aggregate the indicators and trigger trading alerts based on the confluence of specific conditions. Making such scripts customizable via inputs poses an additional challenge, as it often involves complicated input menus and conditional logic.
This indicator addresses these challenges by providing a simple, flexible input menu where users can easily define alert criteria by listing groups of conditions from various technical indicators in simple text boxes . With this script, you can create complex alert conditions intuitively from the "Settings/Inputs" tab without ever writing or modifying a single line of code. This framework makes advanced alert setups more accessible to non-coders. Additionally, it can help Pine programmers save time and effort when testing various condition combinations.
█ FEATURES
Configurable alert direction
The "Direction" dropdown at the top of the "Settings/Inputs" tab specifies the allowed direction for the alert conditions. There are four possible options:
• Up only : The indicator only evaluates upward conditions.
• Down only : The indicator only evaluates downward conditions.
• Up and down (default): The indicator evaluates upward and downward conditions, creating alert triggers for both.
• Alternating : The indicator prevents alert triggers for consecutive conditions in the same direction. An upward condition must be the first occurrence after a downward condition to trigger an alert, and vice versa for downward conditions.
Flexible condition groups
This script features six text inputs where users can define distinct condition groups (ensembles) for their alerts. An alert trigger occurs if all the conditions in at least one group occur.
Each input accepts a comma-separated list of numbers with optional spaces (e.g., "1, 4, 8"). Each listed number, from 1 to 35, corresponds to a specific individual condition. Below are the conditions that the numbers represent:
1 — RSI above/below threshold
2 — RSI below/above threshold
3 — Stoch above/below threshold
4 — Stoch below/above threshold
5 — Stoch K over/under D
6 — Stoch K under/over D
7 — AO above/below threshold
8 — AO below/above threshold
9 — AO rising/falling
10 — AO falling/rising
11 — Supertrend up/down
12 — Supertrend down/up
13 — Close above/below MA
14 — Close below/above MA
15 — Close above/below open
16 — Close below/above open
17 — Close increase/decrease
18 — Close decrease/increase
19 — Close near Donchian top/bottom (Close > (Mid + HH) / 2)
20 — Close near Donchian bottom/top (Close < (Mid + LL) / 2)
21 — New Donchian high/low
22 — New Donchian low/high
23 — Rising volume
24 — Falling volume
25 — Volume above average (Volume > SMA(Volume, 20))
26 — Volume below average (Volume < SMA(Volume, 20))
27 — High body to range ratio (Abs(Close - Open) / (High - Low) > 0.5)
28 — Low body to range ratio (Abs(Close - Open) / (High - Low) < 0.5)
29 — High relative volatility (ATR(7) > ATR(40))
30 — Low relative volatility (ATR(7) < ATR(40))
31 — External condition 1
32 — External condition 2
33 — External condition 3
34 — External condition 4
35 — External condition 5
These constituent conditions fall into three distinct categories:
• Directional pairs : The numbers 1-22 correspond to pairs of opposing upward and downward conditions. For example, if one of the inputs includes "1" in the comma-separated list, that group uses the "RSI above/below threshold" condition pair. In this case, the RSI must be above a high threshold for the group to trigger an upward alert, and the RSI must be below a defined low threshold to trigger a downward alert.
• Non-directional filters : The numbers 23-30 correspond to conditions that do not represent directional information. These conditions act as filters for both upward and downward alerts. Traders often use non-directional conditions to refine trending or mean reversion signals. For instance, if one of the input lists includes "30", that group uses the "Low relative volatility" condition. The group can trigger an upward or downward alert only if the 7-period Average True Range (ATR) is below the 40-period ATR.
• External conditions : The numbers 31-35 correspond to external conditions based on the plots from other indicators on the chart. To set these conditions, use the source inputs in the "External conditions" section near the bottom of the "Settings/Inputs" tab. The external value can represent an upward, downward, or non-directional condition based on the following logic:
▫ Any value above 0 represents an upward condition.
▫ Any value below 0 represents a downward condition.
▫ If the checkbox next to the source input is selected, the condition becomes non-directional . Any group that uses the condition can trigger upward or downward alerts only if the source value is not 0.
To learn more about using plotted values from other indicators, see this article in our Help Center and the Source input section of our Pine Script™ User Manual.
Group markers
Each comma-separated list represents a distinct group , where all the listed conditions must occur to trigger an alert. This script assigns preset markers (names) to each condition group to make the active ensembles easily identifiable in the generated alert messages and labels. The markers assigned to each group use the format "M", where "M" is short for "Marker" and "x" is the group number. The titles of the inputs at the top of the "Settings/Inputs" tab show these markers for convenience.
For upward conditions, the labels and alert messages show group markers with upward triangles (e.g., "M1▲"). For downward conditions, they show markers with downward triangles (e.g., "M1▼").
NOTE: By default, this script populates the "M1" field with a pre-configured list for a mean reversion group ("2,18,24,28"). The other fields are empty. If any "M*" input does not contain a value, the indicator ignores it in the alert calculations.
Custom alert messages
By default, the indicator's alert message text contains the activated markers and their direction as a comma-separated list. Users can override this message for upward or downward alerts with the two text fields at the bottom of the "Settings/Inputs" tab. When the fields are not empty , the alerts use that text instead of the default marker list.
NOTE: This script generates alert triggers, not the alerts themselves. To set up an alert based on this script's conditions, open the "Create Alert" dialog box, then select the "Ensemble Alerts" and "Any alert() function call" options in the "Condition" tabs. See the Alerts FAQ in our Pine Script™ User Manual for more information.
Condition visualization
This script offers organized visualizations of its conditions, allowing users to inspect the behaviors of each condition alongside the specified groups. The key visual features include:
1) Conditional plots
• The indicator plots the history of each individual condition, excluding the external conditions, as circles at different levels. Opposite conditions appear at positive and negative levels with the same absolute value. The plots for each condition show values only on the bars where they occur.
• Each condition's plot is color-coded based on its type. Aqua and orange plots represent opposing directional conditions, and purple plots represent non-directional conditions. The titles of the plots also contain the condition numbers to which they apply.
• The plots in the separate pane can be turned on or off with the "Show plots in pane" checkbox near the top of the "Settings/Inputs" tab. This input only toggles the color-coded circles, which reduces the graphical load. If you deactivate these visuals, you can still inspect each condition from the script's status line and the Data Window.
• As a bonus, the indicator includes "Up alert" and "Down alert" plots in the Data Window, representing the combined upward and downward ensemble alert conditions. These plots are also usable in additional indicator-on-indicator calculations.
2) Dynamic labels
• The indicator draws a label on the main chart pane displaying the activated group markers (e.g., "M1▲") each time an alert condition occurs.
• The labels for upward alerts appear below chart bars. The labels for downward alerts appear above the bars.
NOTE: This indicator can display up to 500 labels because that is the maximum allowed for a single Pine script.
3) Background highlighting
• The indicator can highlight the main chart's background on bars where upward or downward condition groups activate. Use the "Highlight background" inputs in the "Settings/Inputs" tab to enable these highlights and customize their colors.
• Unlike the dynamic labels, these background highlights are available for all chart bars, irrespective of the number of condition occurrences.
█ NOTES
• This script uses Pine Script™ v6, the latest version of TradingView's programming language. See the Release notes and Migration guide to learn what's new in v6 and how to convert your scripts to this version.
• This script imports our new Alerts library, which features functions that provide high-level simplicity for working with complex compound conditions and alerts. We used the library's `compoundAlertMessage()` function in this indicator. It evaluates items from "bool" arrays in groups specified by an array of strings containing comma-separated index lists , returning a tuple of "string" values containing the marker of each activated group.
• The script imports the latest version of the ta library to calculate several technical indicators not included in the built-in `ta.*` namespace, including Double Exponential Moving Average (DEMA), Triple Exponential Moving Average (TEMA), Fractal Adaptive Moving Average (FRAMA), Tilson T3, Awesome Oscillator (AO), Full Stochastic (%K and %D), SuperTrend, and Donchian Channels.
• The script uses the `force_overlay` parameter in the label.new() and bgcolor() calls to display the drawings and background colors in the main chart pane.
• The plots and hlines use the available `display.*` constants to determine whether the visuals appear in the separate pane.
Look first. Then leap.
US30 Challenge ComplementPurpose of the Script
This script is designed to analyze bullish and bearish engulfing patterns on the US30 index. It combines moving averages (MA and EMA) on both daily and hourly charts to detect crossovers, evaluates engulfing candlestick patterns, and adds additional conditions based on the size of candlestick wicks. The script provides visual feedback by coloring bars and plotting flags when certain conditions are met.
Explanation of the Key Features
User Input Parameters:
The script allows users to customize the period and color of both a simple moving average (SMA) and an exponential moving average (EMA). This flexibility enables users to adapt the moving average settings to their preferred strategy.
Moving Averages (MA and EMA):
Two key moving averages are calculated:
A simple moving average (SMA) with a period of 18 for both daily and hourly timeframes.
An exponential moving average (EMA) with a period of 8 for both daily and hourly timeframes.
These moving averages are used to detect whether the EMA is above or below the SMA in both the daily and hourly charts, providing trend direction insights.
Engulfing Patterns:
The script detects bullish and bearish engulfing patterns across multiple candlesticks.
Bullish Engulfing: Occurs when a green candlestick (closing higher than it opens) completely engulfs the body of the previous red candlestick.
Bearish Engulfing: Occurs when a red candlestick (closing lower than it opens) completely engulfs the body of the previous green candlestick.
The script detects these patterns not only for a single previous candle but also up to three previous candles, making it more versatile in recognizing different engulfing scenarios.
A percentage threshold is introduced to ensure that the engulfing candles meet a minimum size requirement, which can be customized by the user.
Cross-Detection on Multiple Timeframes:
The script checks whether the EMA is above or below the SMA on both daily and hourly charts.
This crossover is critical for confirming bullish or bearish conditions. If the EMA is below the SMA on the hourly chart, combined with a bullish engulfing pattern, it suggests a potential bullish reversal. Conversely, if the EMA is above the SMA with a bearish engulfing pattern, it signals a potential bearish reversal.
Candlestick Size and Wick Filters:
The script includes functions to filter candlesticks based on their wick sizes.
Bullish Wick Filter: Ensures that the upper wick of a bullish candle is not too large compared to the body.
Bearish Wick Filter: Ensures that the lower wick of a bearish candle is not too large compared to the body.
These filters help confirm strong candlesticks, reducing noise from candles with long wicks that might indicate indecision.
Visual Cues (Bar Coloring and Flags):
The script colors bars green if bullish engulfing conditions are met and red if bearish engulfing conditions are met. This provides an immediate visual indication of potential reversal points.
It also plots flags above bullish candlesticks and below bearish candlesticks if they have favorable wick characteristics. This adds an extra layer of confirmation for identifying stronger candles.
How to Use the Script
Adjust Parameters:
Before using the script, traders can customize the moving average periods, colors, and the percentage threshold for the engulfing candlesticks. This allows users to fine-tune the script to different timeframes and market conditions.
Engulfing Pattern Detection:
Traders can rely on the script to automatically detect and highlight bullish and bearish engulfing patterns, making it easier to spot potential reversal points. The script considers both single and multi-candlestick engulfing patterns, adding robustness to its detection logic.
Cross-Verification with Moving Averages:
The script adds a layer of confirmation by checking the relationship between the EMA and SMA. Traders can look for alignment between the moving averages and the engulfing patterns to increase the likelihood of successful trades.
Filter Candles Based on Wick Size:
Traders can use the additional wick filters to focus on stronger, more decisive candles. Flags are plotted on these candles, making them easier to identify.
Differences from Other Scripts
Multi-Candle Engulfing Detection: The script detects engulfing patterns over multiple previous candles (up to three), which is not commonly found in most scripts.
Customizable Engulfing Size: The user can set a minimum size threshold for engulfing candles, providing greater control over the pattern detection.
Wick Filters: The inclusion of filters to check for wick size makes this script more precise in identifying strong engulfing candles, reducing false signals from indecisive candles with large wicks.
EMA and SMA Crossover Integration: By integrating moving average crossovers, the script provides additional trend confirmation, increasing the reliability of the engulfing signals.
***************************************************(Español)
Propósito del Script
Este script está diseñado para analizar patrones de envolvente alcista y bajista en el índice US30. Combina medias móviles (MA y EMA) en gráficos diarios y horarios para detectar cruces, evalúa patrones de velas envolventes y añade condiciones adicionales basadas en el tamaño de las mechas. El script ofrece retroalimentación visual coloreando barras y trazando banderas cuando se cumplen ciertas condiciones.
Explicación de las Características Clave
Parámetros de Entrada del Usuario:
El script permite personalizar el período y el color tanto de una media móvil simple (SMA) como de una media móvil exponencial (EMA), lo que permite a los usuarios ajustar las configuraciones según su estrategia.
Medias Móviles (MA y EMA):
Dos medias móviles clave se calculan:
Una media móvil simple (SMA) con un período de 18 tanto para los marcos de tiempo diarios como horarios.
Una media móvil exponencial (EMA) con un período de 8 tanto para los marcos de tiempo diarios como horarios.
Patrones Envolventes:
El script detecta patrones de envolvente alcista y bajista en múltiples velas.
Se introduce un umbral porcentual que garantiza que las velas envolventes tengan un tamaño mínimo, personalizable por el usuario.
Detección de Cruces en Múltiples Marcos Temporales:
El script verifica si la EMA está por encima o por debajo de la SMA en gráficos diarios y horarios, lo que ayuda a confirmar las condiciones de tendencia.
Filtros de Tamaño de Mecha:
El script incluye funciones para filtrar velas según el tamaño de sus mechas, lo que ayuda a identificar velas más fuertes y decisivas.
Indicadores Visuales:
El script colorea las barras en verde si se cumplen las condiciones de envolvente alcista y en rojo si se cumplen las de envolvente bajista. También traza banderas para indicar velas con mechas favorables.
Cómo usar el Script
Ajustar Parámetros.
Detección de Patrones Envolventes.
Verificación con Medias Móviles.
Filtrar Velas Según el Tamaño de Mecha.
Diferencias con Otros Scripts
Detección Multi-Velas de Envolventes.
Tamaño Personalizable de Envolventes.
Filtros de Mechas.
Integración de Cruces de EMA y SMA.
Delta Volume Channels [LucF]█ OVERVIEW
This indicator displays on-chart visuals aimed at making the most of delta volume information. It can color bars and display two channels: one for delta volume, another calculated from the price levels of bars where delta volume divergences occur. Markers and alerts can also be configured using key conditions, and filtered in many different ways. The indicator caters to traders who prefer chart visuals over raw values. It will work on historical bars and in real time, using intrabar analysis to calculate delta volume in both conditions.
█ CONCEPTS
Delta Volume
The volume delta concept divides a bar's volume in "up" and "down" volumes. The delta is calculated by subtracting down volume from up volume. Many calculation techniques exist to isolate up and down volume within a bar. The simplest techniques use the polarity of interbar price changes to assign their volume to up or down slots, e.g., On Balance Volume or the Klinger Oscillator . Others such as Chaikin Money Flow use assumptions based on a bar's OHLC values. The most precise calculation method uses tick data and assigns the volume of each tick to the up or down slot depending on whether the transaction occurs at the bid or ask price. While this technique is ideal, it requires huge amounts of data on historical bars, which usually limits the historical depth of charts and the number of symbols for which tick data is available.
This indicator uses intrabar analysis to achieve a compromise between the simplest and most precise methods of calculating volume delta. In the context where historical tick data is not yet available on TradingView, intrabar analysis is the most precise technique to calculate volume delta on historical bars on our charts. TradingView's Volume Profile built-in indicators use it, as do the CVD - Cumulative Volume Delta Candles and CVD - Cumulative Volume Delta (Chart) indicators published from the TradingView account . My Volume Delta Columns Pro indicator also uses intrabar analysis. Other volume delta indicators such as my Realtime 5D Profile use realtime chart updates to achieve more precise volume delta calculations. Indicators of that type cannot be used on historical bars however; they only work in real time.
This is the logic I use to assign intrabar volume to up or down slots:
• If the intrabar's open and close values are different, their relative position is used.
• If the intrabar's open and close values are the same, the difference between the intrabar's close and the previous intrabar's close is used.
• As a last resort, when there is no movement during an intrabar and it closes at the same price as the previous intrabar, the last known polarity is used.
Once all intrabars making up a chart bar have been analyzed and the up or down property of each intrabar's volume determined, the up volumes are added and the down volumes subtracted. The resulting value is volume delta for that chart bar, which can be used as an estimate of the buying/selling pressure on an instrument.
Delta Volume Percent (DV%)
This value is the proportion that delta volume represents of the total intrabar volume in the chart bar. Note that on some symbols/timeframes, the total intrabar volume may differ from the chart's volume for a bar, but that will not affect our calculations since we use the total intrabar volume.
Delta Volume Channel
The DV channel is the space between two moving averages: the reference line and a DV%-weighted version of that reference. The reference line is a moving average of a type, source and length which you select. The DV%-weighted line uses the same settings, but it averages the DV%-weighted price source.
The weight applied to the source of the reference line is calculated from two values, which are multiplied: DV% and the relative size of the bar's volume in relation to previous bars. The effect of this is that DV% values on bars with higher total volume will carry greater weight than those with lesser volume.
The DV channel can be in one of four states, each having its corresponding color:
• Bull (teal): The DV%-weighted line is above the reference line.
• Strong bull (lime): The bull condition is fulfilled and the bar's close is above the reference line and both the reference and the DV%-weighted lines are rising.
• Bear (maroon): The DV%-weighted line is below the reference line.
• Strong bear (pink): The bear condition is fulfilled and the bar's close is below the reference line and both the reference and the DV%-weighted lines are falling.
Divergences
In the context of this indicator, a divergence is any bar where the slope of the reference line does not match that of the DV%-weighted line. No directional bias is assigned to divergences when they occur.
Divergence Channel
The divergence channel is the space between two levels (by default, the bar's low and high ) saved when divergences occur. When price has breached a channel and a new divergence occurs, a new channel is created. Until that new channel is breached, bars where additional divergences occur will expand the channel's levels if the bar's price points are outside the channel.
Prices breaches of the divergence channel will change its state. Divergence channels can be in one of five different states:
• Bull (teal): Price has breached the channel to the upside.
• Strong bull (lime): The bull condition is fulfilled and the DV channel is in the strong bull state.
• Bear (maroon): Price has breached the channel to the downside.
• Strong bear (pink): The bear condition is fulfilled and the DV channel is in the strong bear state.
• Neutral (gray): The channel has not been breached.
█ HOW TO USE THE INDICATOR
Load the indicator on an active chart (see here if you don't know how).
The default configuration displays:
• The DV channel, without the reference or DV%-weighted lines.
• The Divergence channel, without its level lines.
• Bar colors using the state of the DV channel.
The default settings use an Arnaud-Legoux moving average on the close and a length of 20 bars. The DV%-weighted version of it uses a combination of DV% and relative volume to calculate the ultimate weight applied to the reference. The DV%-weighted line is capped to 5 standard deviations of the reference. The lower timeframe used to access intrabars automatically adjusts to the chart's timeframe and achieves optimal balance between the number of intrabars inspected in each chart bar, and the number of chart bars covered by the script's calculations.
The Divergence channel's levels are determined using the high and low of the bars where divergences occur. Breaches of the channel require a bar's low to move above the top of the channel, and the bar's high to move below the channel's bottom.
No markers appear on the chart; if you want to create alerts from this script, you will need first to define the conditions that will trigger the markers, then create the alert, which will trigger on those same conditions.
To learn more about how to use this indicator, you must understand the concepts it uses and the information it displays, which requires reading this description. There are no videos to explain it.
█ FEATURES
The script's inputs are divided in four sections: "DV channel", "Divergence channel", "Other Visuals" and "Marker/Alert Conditions". The first setting is the selection method used to determine the intrabar precision, i.e., how many lower timeframe bars (intrabars) are examined in each chart bar. The more intrabars you analyze, the more precise the calculation of DV% results will be, but the less chart coverage can be covered by the script's calculations.
DV Channel
Here, you control the visibility and colors of the reference line, its weighted version, and the DV channel between them.
You also specify what type of moving average you want to use as a reference line, its source and length. This acts as the DV channel's baseline. The DV%-weighted line is also a moving average of the same type and length as the reference line, except that it will be calculated from the DV%-weighted source used in the reference line. By default, the DV%-weighted line is capped to five standard deviations of the reference line. You can change that value here. This section is also where you can disable the relative volume component of the weight.
Divergence Channel
This is where you control the appearance of the divergence channel and the key price values used in determining the channel's levels and breaching conditions. These choices have an impact on the behavior of the channel. More generous level prices like the default low and high selection will produce more conservative channels, as will the default choice for breach prices.
In this section, you can also enable a mode where an attempt is made to estimate the channel's bias before price breaches the channel. When it is enabled, successive increases/decreases of the channel's top and bottom levels are counted as new divergences occur. When one count is greater than the other, a bull/bear bias is inferred from it.
Other Visuals
You specify here:
• The method used to color chart bars, if you choose to do so.
• The display of a mark appearing above or below bars when a divergence occurs.
• If you want raw values to appear in tooltips when you hover above chart bars. The default setting does not display them, which makes the script faster.
• If you want to display an information box which by default appears in the lower left of the chart.
It shows which lower timeframe is used for intrabars, and the average number of intrabars per chart bar.
Marker/Alert Conditions
Here, you specify the conditions that will trigger up or down markers. The trigger conditions can include a combination of state transitions of the DV and the divergence channels. The triggering conditions can be filtered using a variety of conditions.
Configuring the marker conditions is necessary before creating an alert from this script, as the alert will use the marker conditions to trigger.
Markers only appear on bar closes, so they will not repaint. Keep in mind, when looking at markers on historical bars, that they are positioned on the bar when it closes — NOT when it opens.
Raw values
The raw values calculated by this script can be inspected using a tooltip and the Data Window. The tooltip is visible when you hover over the top of chart bars. It will display on the last 500 bars of the chart, and shows the values of DV, DV%, the combined weight, and the intermediary values used to calculate them.
█ INTERPRETATION
The aim of the DV channel is to provide a visual representation of the buying/selling pressure calculated using delta volume. The simplest characteristic of the channel is its bull/bear state. One can then distinguish between its bull and strong bull states, as transitions from strong bull to bull states will generally happen when buyers are losing steam. While one should not infer a reversal from such transitions, they can be a good place to tighten stops. Only time will tell if a reversal will occur. One or more divergences will often occur before reversals.
The nature of the divergence channel's design makes it particularly adept at identifying consolidation areas if its settings are kept on the conservative side. A gray divergence channel should usually be considered a no-trade zone. More adventurous traders can use the DV channel to orient their trade entries if they accept the risk of trading in a neutral divergence channel, which by definition will not have been breached by price.
If your charts are already busy with other stuff you want to hold on to, you could consider using only the chart bar coloring component of this indicator:
At its simplest, one way to use this indicator would be to look for overlaps of the strong bull/bear colors in both the DV channel and a divergence channel, as these identify points where price is breaching the divergence channel when buy/sell pressure is consistent with the direction of the breach. I have highlighted all those points in the chart below. Not all of them would have produced profitable trades, but nothing is perfect in the markets. Also, keep in mind that the circles identify the visual you would be looking for — not the trade's entry level.
█ LIMITATIONS
• The script will not work on symbols where no volume is available. An error will appear when that is the case.
• Because a maximum of 100K intrabars can be analyzed by a script, a compromise is necessary between the number of intrabars analyzed per chart bar
and chart coverage. The more intrabars you analyze per chart bar, the less coverage you will obtain.
The setting of the "Intrabar precision" field in the "DV channel" section of the script's inputs
is where you control how the lower timeframe is calculated from the chart's timeframe.
█ NOTES
Volume Quality
If you use volume, it's important to understand its nature and quality, as it varies with sectors and instruments. My Volume X-ray indicator is one way you can appraise the quality of an instrument's intraday volume.
For Pine Script™ Coders
• This script uses the new overload of the fill() function which now makes it possible to do vertical gradients in Pine. I use it for both channels displayed by this script.
• I use the new arguments for plot() 's `display` parameter to control where the script plots some of its values,
namely those I only want to appear in the script's status line and in the Data Window.
• I wrote my script using the revised recommendations in the Style Guide from the Pine v5 User Manual.
█ THANKS
To PineCoders . I have used their lower_tf library in this script, to manage the calculation of the LTF and intrabar stats, and their Time library to convert a timeframe in seconds to a printable form for its display in the Information box.
To TradingView's Pine Script™ team. Their innovations and improvements, big and small, constantly expand the boundaries of the language. What this script does would not have been possible just a few months back.
And finally, thanks to all the users of my scripts who take the time to comment on my publications and suggest improvements. I do not reply to all but I do read your comments and do my best to implement your suggestions with the limited time that I have.
Scanner/Screener of Over 40 Coins Per Script I am very scatter-brained by nature and sporadic in my thought processes but if these benefit the community and ya'll ask for more perhaps I will get better and even out a tad....probably not....but you never know. Firstly, allow me to apologize to all the vet/more sophisticated coders out there whose eyes and brains might just be overly taxed due to my poor coding structure. Im just getting started for the first time in ANY sort of coding...so cut me a little slack. Also, if anyone sees any mistakes or the functionality is not as I proclaimed, PLEASE do let me know. In these past 12mo of me learning my 1st coding language (Pinescript) I would say that I have been intently focused on creating all types/sorts of scanners/screeners. Ive always hoped to be a benefit to the community as I was always SO grateful to those who have come before me that have led me to the little bit of progress I have made with Pinescript. This script is not necessarily something that should be traded with as it is just a thrown together example showing a scanner/screener whose results produce plot outputs (ie, Rate of Change / oscillators as well / etc) and how they can be used in the alert system so that only 1 alert has to be set per iteration of the script but more importantly how to use/scan/screen with over 40 coins per script. My intent is not to trick anyone here. So to be PERFECTLY CLEAR, more than 40 coins CAN in fact be screened/scanned from one script (here I am doing all of KUCOIN's Margin Coins...72 total I look at)...BUT...(heres the catch) it must be added to the chart however many times EQUAL to the amount of "sets" you have in your script. (Heres the limitation by TV) There cannot be more than 40 coins in each "set". The less coins you have per set, the quicker the script will startup and run, thus, the quicker alerts will be received if automating the process. Though, if you only have the free plan and can only have MAX 3 indicators per chart then the MAX you can screen at a time is 120 coins if you use 40 coins per set. So, this is the first one I would like to introduce. For this one your screener/scanner must be using some sort of plots as output that is being screened for. (original inspiration of ALL my variations mainly come from @QuantNomad, @daveatt, and @LonesomeTheBlue (and a few others I may be forgetting at the moment). Thanks for the inspiration through countless publications that ya'll have created for us in the community.
Some of my variations are more complex/elegant than others but there are MANY very different ones that I would like to share with the community. If you leave a comment and wonder why I have not responded but did so to every comment around yours...see if you are one of the individuals in this next few sentences...and if you are then perhaps someone else would like to waste their time responding to your comment...but basically, if you don't want to spend the time helping yourself by reading the title, description section, AND the comments section (at least scanning them) then I am MOST DEFINITELY not going to help you down your path of destruction that is most likely soon to be your blown-up trading account. I was called a "masochist" after asking for guidance on if its worth the headache to publish anything on TV bc there will NO DOUBT be comments that'll make me wish I didn't (ie. someone CLEARLY not reading the description (or seemingly even the title sometimes) bc they make a comment that has been explicitly addressed, or someone asking to rebuild the code compatible for another charting software or whatnot, or how about those asking if it repaints (this one is almost always addressed in the comments section but I can understand this question more than others as Im only 1 yr into learning any sort of coding for the first time in the beginning I saw people ask on EVERY script about if it repainted and it was worrisome at the lest (esp bc I didn't even understand what it was not so long ago, or my favorite...what TF it works best on...these people CLEARLY need not be trading yet if your still asking questions as such...Ill end it there). Point being, Ive got some truly VERY useful scripts that I want to share and as long as these people don't make me regret doing so in the beginning, then whats mine...will soon be yours. Though, I will take a little time between the releases.
YOU GUYS (TV and its community) ARE AWESOME (most of you anyways ;)
MUCH LOVE,
ChasinAlts
(1) INPUTS
Here is where the "sets" come in. I am looking at all of KUCOIN's Margin Coins (72 of them at least) so am splitting them up into 3 sets/iterations and a copy of the script must be added equal to amount of "sets" you have here. This is the ONLY workaround I have found to be able to scan/screen with more than 40 coins per script (due to TV's limitation of 40 Security Calls per script) ***So for everyone saying it's impossible scan more than 40 Coins per scipt...it' MOST DEFINITELY possible....BUT ONLY by adding this script multiple times on the chart and selecting 1 of each of the "sets" in the script settings via the chart window. To save the much needed room you must push each iteration of the script into 1 window and merging the scales of each into 1 scale(ie. "Scale A") within the settings of the script name on the chart(3 horizontal dots)
(2) FUNCTION
(2.1) COLORIDs
This is just to set up all my Colors of plots which are being matched with their respective labels. I have a diff color for each of the 72 coins Im plotting so Im telling the function, "depending on which set of coins I select...give me this color out of the colors I input later into the function"
(2.2) TICKERID CONSTRUCTION
I construct the tickerID this way so that the labels on my plots have only the Coin's name vs the label having the (Exchange Name):(Coin Name)(Base Pair Name). If you are using more than 1 Base pair (ie. XRP/BTC and XRP/USDT and XRP/ETH) OR more than 1 Exchange OR want your plots to show MORE THAN just the Trading Coin's name, then the tickerID MUST BE constructed differently
(2.3) SECURITY CALL & PLOT OUTPUT VARIABLES
If using a Higher Time Frame in Security Call then it MUST BE adjusted to permit or dissallow repainting if you so wish (BEYOND THE SCOPE OF THIS PUBLICATION so Do Your Own Researh). If your MAIN LOGIC is more complex than simply using a TV built-in function), THEN it MUST BE built into its own function outside of this function and called on within the "expression" slot of this Security Call OR can also be built into this function and called on in the "expression" slot of this Security call (BEYOND THE SCOPE OF THIS PUB SO DYOR). FURTHERMORE...when you are using a series(ie high/low/close/open/hl2/etc) / bar_index / time / etc that will be specific to the Coin/tickerID, then they MUST BE explicitly used within the "expression" slot of the Security Function when calling on your Main Logic or else it will pull the series/time/bar_index/etc from the Coin that the Chart is presently on (BEYOND THE SCOPE OF THIS PUB SO DYOR)
(2.4) PLOT LABEL
This is the Plot's Label that will be next to the end of the plot on the LAST bar_index. ***Notice in the "text" slot of the label I have "_coin" (without the quotes obviously)...this is where have JUST the Coin's name comes into effect on the label vs the (Exchange Name):(Coin Name)(Base Pair Name) which looks MUCH cleaner
(2.5) ALERT LOGIC / ALERT LABEL
Your alert logic need not be as complex as this... I just wanted to create a decent enough timing for this system and wanted to simply print the labels displaying which coin produced the alert at the same time the alerts would go off. Alert is set up to Trigger Bullish when the ROC is below the Threshold and _chg > _chg X=length of bars inputted in "Rising/Falling Length" setting and vise versa for Bearish Alerts. If _chg plot only goes past threshold for a VERY few amount of bars NOT providing enough time for initial Alert to trigger, then alert/label triggers on crossing of threshold back towards 0(zero). ONLY 1 alert needs to be set per script to be able to scan ALL 72 of the coins as I have them in this script. Timing of Alert is inline with the name label printed past the thresholds.
(3) VARIABLES FROM MAIN FUNCTION
This is the tuple of the Main Function that outputs the variables from 3 lines up to be able to plot the lines and color them according to the colors on the labels. *** As of now, we CANNOT plot from within the function so MUST BE done this way to produce the variables and colors needed. The plots are the ONLY thing in this script that cannot be executed from within the function
(4) LINE PLOTS
ALL output variables from our Main Function are used here for the line plots
Monte Carlo Range Forecast [DW]This is an experimental study designed to forecast the range of price movement from a specified starting point using a Monte Carlo simulation.
Monte Carlo experiments are a broad class of computational algorithms that utilize random sampling to derive real world numerical results.
These types of algorithms have a number of applications in numerous fields of study including physics, engineering, behavioral sciences, climate forecasting, computer graphics, gaming AI, mathematics, and finance.
Although the applications vary, there is a typical process behind the majority of Monte Carlo methods:
-> First, a distribution of possible inputs is defined.
-> Next, values are generated randomly from the distribution.
-> The values are then fed through some form of deterministic algorithm.
-> And lastly, the results are aggregated over some number of iterations.
In this study, the Monte Carlo process used generates a distribution of aggregate pseudorandom linear price returns summed over a user defined period, then plots standard deviations of the outcomes from the mean outcome generate forecast regions.
The pseudorandom process used in this script relies on a modified Wichmann-Hill pseudorandom number generator (PRNG) algorithm.
Wichmann-Hill is a hybrid generator that uses three linear congruential generators (LCGs) with different prime moduli.
Each LCG within the generator produces an independent, uniformly distributed number between 0 and 1.
The three generated values are then summed and modulo 1 is taken to deliver the final uniformly distributed output.
Because of its long cycle length, Wichmann-Hill is a fantastic generator to use on TV since it's extremely unlikely that you'll ever see a cycle repeat.
The resulting pseudorandom output from this generator has a minimum repetition cycle length of 6,953,607,871,644.
Fun fact: Wichmann-Hill is a widely used PRNG in various software applications. For example, Excel 2003 and later uses this algorithm in its RAND function, and it was the default generator in Python up to v2.2.
The generation algorithm in this script takes the Wichmann-Hill algorithm, and uses a multi-stage transformation process to generate the results.
First, a parent seed is selected. This can either be a fixed value, or a dynamic value.
The dynamic parent value is produced by taking advantage of Pine's timenow variable behavior. It produces a variable parent seed by using a frozen ratio of timenow/time.
Because timenow always reflects the current real time when frozen and the time variable reflects the chart's beginning time when frozen, the ratio of these values produces a new number every time the cache updates.
After a parent seed is selected, its value is then fed through a uniformly distributed seed array generator, which generates multiple arrays of pseudorandom "children" seeds.
The seeds produced in this step are then fed through the main generators to produce arrays of pseudorandom simulated outcomes, and a pseudorandom series to compare with the real series.
The main generators within this script are designed to (at least somewhat) model the stochastic nature of financial time series data.
The first step in this process is to transform the uniform outputs of the Wichmann-Hill into outputs that are normally distributed.
In this script, the transformation is done using an estimate of the normal distribution quantile function.
Quantile functions, otherwise known as percent-point or inverse cumulative distribution functions, specify the value of a random variable such that the probability of the variable being within the value's boundary equals the input probability.
The quantile equation for a normal probability distribution is μ + σ(√2)erf^-1(2(p - 0.5)) where μ is the mean of the distribution, σ is the standard deviation, erf^-1 is the inverse Gauss error function, and p is the probability.
Because erf^-1() does not have a simple, closed form interpretation, it must be approximated.
To keep things lightweight in this approximation, I used a truncated Maclaurin Series expansion for this function with precomputed coefficients and rolled out operations to avoid nested looping.
This method provides a decent approximation of the error function without completely breaking floating point limits or sucking up runtime memory.
Note that there are plenty of more robust techniques to approximate this function, but their memory needs very. I chose this method specifically because of runtime favorability.
To generate a pseudorandom approximately normally distributed variable, the uniformly distributed variable from the Wichmann-Hill algorithm is used as the input probability for the quantile estimator.
Now from here, we get a pretty decent output that could be used itself in the simulation process. Many Monte Carlo simulations and random price generators utilize a normal variable.
However, if you compare the outputs of this normal variable with the actual returns of the real time series, you'll find that the variability in shocks (random changes) doesn't quite behave like it does in real data.
This is because most real financial time series data is more complex. Its distribution may be approximately normal at times, but the variability of its distribution changes over time due to various underlying factors.
In light of this, I believe that returns behave more like a convoluted product distribution rather than just a raw normal.
So the next step to get our procedurally generated returns to more closely emulate the behavior of real returns is to introduce more complexity into our model.
Through experimentation, I've found that a return series more closely emulating real returns can be generated in a three step process:
-> First, generate multiple independent, normally distributed variables simultaneously.
-> Next, apply pseudorandom weighting to each variable ranging from -1 to 1, or some limits within those bounds. This modulates each series to provide more variability in the shocks by producing product distributions.
-> Lastly, add the results together to generate the final pseudorandom output with a convoluted distribution. This adds variable amounts of constructive and destructive interference to produce a more "natural" looking output.
In this script, I use three independent normally distributed variables multiplied by uniform product distributed variables.
The first variable is generated by multiplying a normal variable by one uniformly distributed variable. This produces a bit more tailedness (kurtosis) than a normal distribution, but nothing too extreme.
The second variable is generated by multiplying a normal variable by two uniformly distributed variables. This produces moderately greater tails in the distribution.
The third variable is generated by multiplying a normal variable by three uniformly distributed variables. This produces a distribution with heavier tails.
For additional control of the output distributions, the uniform product distributions are given optional limits.
These limits control the boundaries for the absolute value of the uniform product variables, which affects the tails. In other words, they limit the weighting applied to the normally distributed variables in this transformation.
All three sets are then multiplied by user defined amplitude factors to adjust presence, then added together to produce our final pseudorandom return series with a convoluted product distribution.
Once we have the final, more "natural" looking pseudorandom series, the values are recursively summed over the forecast period to generate a simulated result.
This process of generation, weighting, addition, and summation is repeated over the user defined number of simulations with different seeds generated from the parent to produce our array of initial simulated outcomes.
After the initial simulation array is generated, the max, min, mean and standard deviation of this array are calculated, and the values are stored in holding arrays on each iteration to be called upon later.
Reference difference series and price values are also stored in holding arrays to be used in our comparison plots.
In this script, I use a linear model with simple returns rather than compounding log returns to generate the output.
The reason for this is that in generating outputs this way, we're able to run our simulations recursively from the beginning of the chart, then apply scaling and anchoring post-process.
This allows a greater conservation of runtime memory than the alternative, making it more suitable for doing longer forecasts with heavier amounts of simulations in TV's runtime environment.
From our starting time, the previous bar's price, volatility, and optional drift (expected return) are factored into our holding arrays to generate the final forecast parameters.
After these parameters are computed, the range forecast is produced.
The basis value for the ranges is the mean outcome of the simulations that were run.
Then, quarter standard deviations of the simulated outcomes are added to and subtracted from the basis up to 3σ to generate the forecast ranges.
All of these values are plotted and colorized based on their theoretical probability density. The most likely areas are the warmest colors, and least likely areas are the coolest colors.
An information panel is also displayed at the starting time which shows the starting time and price, forecast type, parent seed value, simulations run, forecast bars, total drift, mean, standard deviation, max outcome, min outcome, and bars remaining.
The interesting thing about simulated outcomes is that although the probability distribution of each simulation is not normal, the distribution of different outcomes converges to a normal one with enough steps.
In light of this, the probability density of outcomes is highest near the initial value + total drift, and decreases the further away from this point you go.
This makes logical sense since the central path is the easiest one to travel.
Given the ever changing state of markets, I find this tool to be best suited for shorter term forecasts.
However, if the movements of price are expected to remain relatively stable, longer term forecasts may be equally as valid.
There are many possible ways for users to apply this tool to their analysis setups. For example, the forecast ranges may be used as a guide to help users set risk targets.
Or, the generated levels could be used in conjunction with other indicators for meaningful confluence signals.
More advanced users could even extrapolate the functions used within this script for various purposes, such as generating pseudorandom data to test systems on, perform integration and approximations, etc.
These are just a few examples of potential uses of this script. How you choose to use it to benefit your trading, analysis, and coding is entirely up to you.
If nothing else, I think this is a pretty neat script simply for the novelty of it.
----------
How To Use:
When you first add the script to your chart, you will be prompted to confirm the starting date and time, number of bars to forecast, number of simulations to run, and whether to include drift assumption.
You will also be prompted to confirm the forecast type. There are two types to choose from:
-> End Result - This uses the values from the end of the simulation throughout the forecast interval.
-> Developing - This uses the values that develop from bar to bar, providing a real-time outlook.
You can always update these settings after confirmation as well.
Once these inputs are confirmed, the script will boot up and automatically generate the forecast in a separate pane.
Note that if there is no bar of data at the time you wish to start the forecast, the script will automatically detect use the next available bar after the specified start time.
From here, you can now control the rest of the settings.
The "Seeding Settings" section controls the initial seed value used to generate the children that produce the simulations.
In this section, you can control whether the seed is a fixed value, or a dynamic one.
Since selecting the dynamic parent option will change the seed value every time you change the settings or refresh your chart, there is a "Regenerate" input built into the script.
This input is a dummy input that isn't connected to any of the calculations. The purpose of this input is to force an update of the dynamic parent without affecting the generator or forecast settings.
Note that because we're running a limited number of simulations, different parent seeds will typically yield slightly different forecast ranges.
When using a small number of simulations, you will likely see a higher amount of variance between differently seeded results because smaller numbers of sampled simulations yield a heavier bias.
The more simulations you run, the smaller this variance will become since the outcomes become more convergent toward the same distribution, so the differences between differently seeded forecasts will become more marginal.
When using a dynamic parent, pay attention to the dispersion of ranges.
When you find a set of ranges that is dispersed how you like with your configuration, set your fixed parent value to the parent seed that shows in the info panel.
This will allow you to replicate that dispersion behavior again in the future.
An important thing to note when settings alerts on the plotted levels, or using them as components for signals in other scripts, is to decide on a fixed value for your parent seed to avoid minor repainting due to seed changes.
When the parent seed is fixed, no repainting occurs.
The "Amplitude Settings" section controls the amplitude coefficients for the three differently tailed generators.
These amplitude factors will change the difference series output for each simulation by controlling how aggressively each series moves.
When "Adjust Amplitude Coefficients" is disabled, all three coefficients are set to 1.
Note that if you expect volatility to significantly diverge from its historical values over the forecast interval, try experimenting with these factors to match your anticipation.
The "Weighting Settings" section controls the weighting boundaries for the three generators.
These weighting limits affect how tailed the distributions in each generator are, which in turn affects the final series outputs.
The maximum absolute value range for the weights is . When "Limit Generator Weights" is disabled, this is the range that is automatically used.
The last set of inputs is the "Display Settings", where you can control the visual outputs.
From here, you can select to display either "Forecast" or "Difference Comparison" via the "Output Display Type" dropdown tab.
"Forecast" is the type displayed by default. This plots the end result or developing forecast ranges.
There is an option with this display type to show the developing extremes of the simulations. This option is enabled by default.
There's also an option with this display type to show one of the simulated price series from the set alongside actual prices.
This allows you to visually compare simulated prices alongside the real prices.
"Difference Comparison" allows you to visually compare a synthetic difference series from the set alongside the actual difference series.
This display method is primarily useful for visually tuning the amplitude and weighting settings of the generators.
There are also info panel settings on the bottom, which allow you to control size, colors, and date format for the panel.
It's all pretty simple to use once you get the hang of it. So play around with the settings and see what kinds of forecasts you can generate!
----------
ADDITIONAL NOTES & DISCLAIMERS
Although I've done a number of things within this script to keep runtime demands as low as possible, the fact remains that this script is fairly computationally heavy.
Because of this, you may get random timeouts when using this script.
This could be due to either random drops in available runtime on the server, using too many simulations, or running the simulations over too many bars.
If it's just a random drop in runtime on the server, hide and unhide the script, re-add it to the chart, or simply refresh the page.
If the timeout persists after trying this, then you'll need to adjust your settings to a less demanding configuration.
Please note that no specific claims are being made in regards to this script's predictive accuracy.
It must be understood that this model is based on randomized price generation with assumed constant drift and dispersion from historical data before the starting point.
Models like these not consider the real world factors that may influence price movement (economic changes, seasonality, macro-trends, instrument hype, etc.), nor the changes in sample distribution that may occur.
In light of this, it's perfectly possible for price data to exceed even the most extreme simulated outcomes.
The future is uncertain, and becomes increasingly uncertain with each passing point in time.
Predictive models of any type can vary significantly in performance at any point in time, and nobody can guarantee any specific type of future performance.
When using forecasts in making decisions, DO NOT treat them as any form of guarantee that values will fall within the predicted range.
When basing your trading decisions on any trading methodology or utility, predictive or not, you do so at your own risk.
No guarantee is being issued regarding the accuracy of this forecast model.
Forecasting is very far from an exact science, and the results from any forecast are designed to be interpreted as potential outcomes rather than anything concrete.
With that being said, when applied prudently and treated as "general case scenarios", forecast models like these may very well be potentially beneficial tools to have in the arsenal.
Relative Volume at Time█ OVERVIEW
This indicator calculates relative volume, which is the ratio of present volume over an average of past volume.
It offers two calculation modes, both using a time reference as an anchor.
█ CONCEPTS
Calculation modes
The simplest way to calculate relative volume is by using the ratio of a bar's volume over a simple moving average of the last n volume values.
This indicator uses one of two, more subtle ways to calculate both values of the relative volume ratio: current volume:past volume .
The two calculations modes are:
1 — Cumulate from Beginning of TF to Current Bar where:
current volume = the cumulative volume since the beginning of the timeframe unit, and
past volume = the mean of volume during that same relative period of time in the past n timeframe units.
2 — Point-to-Point Bars at Same Offset from Beginning of TF where:
current volume = the volume on a single chart bar, and
past volume = the mean of volume values from that same relative bar in time from the past n timeframe units.
Timeframe units
Timeframe units can be defined in three different ways:
1 — Using Auto-steps, where the timeframe unit automatically adjusts to the timeframe used on the chart:
— A 1 min timeframe unit will be used on 1sec charts,
— 1H will be used for charts at 1min and less,
— 1D will be used for other intraday chart timeframes,
— 1W will be used for 1D charts,
— 1M will be used for charts at less than 1M,
— 1Y will be used for charts at greater or equal than 1M.
2 — As a fixed timeframe that you define.
3 — By time of day (for intraday chart timeframes only), which you also define. If you use non-intraday chart timeframes in this mode, the indicator will switch to Auto-steps.
Relative Relativity
A relative volume value of 1.0 indicates that current volume is equal to the mean of past volume , but how can we determine what constitutes a high relative volume value?
The traditional way is to settle for an arbitrary threshold, with 2.0 often used to indicate that relative volume is worthy of attention.
We wanted to provide traders with a contextual method of calculating threshold values, so in addition to the conventional fixed threshold value,
this indicator includes two methods of calculating a threshold channel on past relative volume values:
1 — Using the standard deviation of relative volume over a fixed lookback.
2 — Using the highs/lows of relative volume over a variable lookback.
Channels calculated on relative volume provide meta-relativity, if you will, as they are relative values of relative volume.
█ FEATURES
Controls in the "Display" section of inputs determine what is visible in the indicator's pane. The next "Settings" section is where you configure the parameters used in the calculations. The "Column Coloring Conditions" section controls the color of the columns, which you will see in three of the five display modes available. Whether columns are plotted or not, the coloring conditions also determine when markers appear, if you have chosen to show the markers in the "Display" section. The presence of markers is what triggers the alerts configured on this indicator. Finally, the "Colors" section of inputs allows you to control the color of the indicator's visual components.
Display
Five display modes are available:
• Current Volume Columns : shows columns of current volume , with past volume displayed as an outlined column.
• Relative Volume Columns : shows relative volume as a column.
• Relative Volume Columns With Average : shows relative volume as a column, with the average of relative volume.
• Directional Relative Volume Average : shows a line calculated using the average of +/- values of relative volume.
The positive value of relative volume is used on up bars; its negative value on down bars.
• Relative Volume Average : shows the average of relative volume.
A Hull moving average is used to calculate the average used in the three last display modes.
You can also control the display of:
• The value or relative volume, when in the first three display modes. Only the last 500 values will be shown.
• Timeframe transitions, shown in the background.
• A reminder of the active timeframe unit, which appears to the right of the indicator's last bar.
• The threshold used, which can be a fixed value or a channel, as determined in the next "Settings" section of inputs.
• Up/Down markers, which appear on transitions of the color of the volume columns (determined by coloring conditions), which in turn control when alerts are triggered.
• Conditions of high volatility.
Settings
Use this section of inputs to change:
• Calculation mode : this is where you select one of this indicator's two calculation modes for current volume and past volume , as explained in the "Concepts" section.
• Past Volume Lookback in TF units : the quantity of timeframe units used in the calculation of past volume .
• Define Timeframes Units Using : the mode used to determine what one timeframe unit is. Note that when using a fixed timeframe, it must be higher than the chart's timeframe.
Also, note that time of day timeframe units only work on intraday chart timeframes.
• Threshold Mode : Five different modes can be selected:
— Fixed Value : You can define the value using the "Fixed Threshold" field below. The default value is 2.0.
— Standard Deviation Channel From Fixed Lookback : This is a channel calculated using the simple moving average of relative volume
(so not the Hull moving average used elsewhere in the indicator), plus/minus the standard deviation multiplied by a user-defined factor.
The lookback used is the value of the "Channel Lookback" field. Its default is 100.
— High/Low Channel From Beginning of TF : in this mode, the High/Low values reset at the beginning of each timeframe unit.
— High/Low Channel From Beginning of Past Volume Lookback : in this mode, the High/Low values start from the farthest point back where we are calculating past volume ,
which is determined by the combination of timeframe units and the "Past Volume Lookback in TF units" value.
— High/Low Channel From Fixed Lookback : In this mode the lookback is fixed. You can define the value using the "Channel Lookback" field. The default value is 100.
• Period of RelVol Moving Average : the period of the Hull moving average used in the "Directional Relative Volume Average" and the "Relative Volume Average".
• High Volatility is defined using fast and slow ATR periods, so this represents the volatility of price.
Volatility is considered to be high when the fast ATR value is greater than its slow value. Volatility can be used as a filter in the column coloring conditions.
Column Coloring Conditions
• Eight different conditions can be turned on or off to determine the color of the volume columns. All "ON" conditions must be met to determine a high/low state of relative volume,
or, in the case of directional relative volume, a bull/bear state.
• A volatility state can also be used to filter the conditions.
• When the coloring conditions and the filter do not allow for a high/low state to be determined, the neutral color is used.
• Transitions of the color of the volume columns determined by coloring conditions are used to plot the up/down markers, which in turn control when alerts are triggered.
Colors
• You can define your own colors for all of the oscillator's plots.
• The default colors will perform well on light or dark chart backgrounds.
Alerts
• An alert can be defined for the script. The alert will trigger whenever an up/down marker appears in the indicator's display.
The particular combination of coloring conditions and the display settings for up/down markers when you create the alert will determine which conditions trigger the alert.
After alerts are created, subsequent changes to the conditions controlling the display of markers will not affect existing alerts.
• By configuring the script's inputs in different ways before you create your alerts, you can create multiple, functionally distinct alerts from this script.
When creating multiple alerts, it is useful to include in the alert's message a reminder of the particular conditions you used for each alert.
• As is usually the case, alerts triggering "Once Per Bar Close" will prevent repainting.
Error messages
Error messages will appear at the end of the chart upon the following conditions:
• When the combination of the timeframe units used and the "Past Volume Lookback in TF units" value create a lookback that is greater than 5000 bars.
The lookback will then be recalculated to a value such that a runtime error does not occur.
• If the chart's timeframe is higher than the timeframe units. This error cannot occur when using Auto-steps to calculate timeframe units.
• If relative volume cannot be calculated, for example, when no volume data is available for the chart's symbol.
• When the threshold of relative volume is configured to be visible but the indicator's scale does not allow it to be visible (in "Current Volume Columns" display mode).
█ NOTES
For traders
The chart shown here uses the following display modes: "Current Volume Columns", "Relative Volume Columns With Average", "Directional Relative Volume Average" and "Relative Volume Average". The last one also shows the threshold channel in standard deviation mode, and the TF Unit reminder to the right, in red.
Volume, like price, is a value with a market-dependent scale. The only valid reference for volume being its past values, any improvement in the way past volume is calculated thus represents a potential opportunity to traders. Relative volume calculated as it is here can help traders extract useful information from markets in many circumstances, markets with cyclical volume such as Forex being one, obvious case. The relative nature of the values calculated by this indicator also make it a natural fit for cross-market and cross-sector analysis, or to identify behavioral changes in the different futures contracts of the same market. Relative volume can also be put to more exotic uses, such as in evaluating changes in the popularity of exchanges.
Relative volume alone has no directional bias. While higher relative volume values always indicate higher trading activity, that activity does not necessarily translate into significant price movement. In a tightly fought battle between buyers and sellers, you could theoretically have very large volume for many bars, with no change whatsoever in bid/ask prices. This of course, is unlikely to happen in reality, and so traders are justified in considering high relative volume values as indicating periods where more attention is required, because imbalances in the strength of buying/selling power during high-volume trading periods can amplify price variations, providing traders with the generally useful gift of volatility.
Be sure to give the "Directional Relative Volume Average" a try. Contrary to the always-positive ratio widely used in this indicator, the "Directional Relative Volume Average" produces a value able to determine a bullish/bearish bias for relative volume.
Note that realtime bars must be complete for the relative volume value to be confirmed. Values calculated on historical or elapsed realtime bars will not recalculate unless historical volume data changes.
Finally, as with all indicators using volume information, keep in mind that some exchanges/brokers supply different feeds for intraday and daily data, and the volume data on both feeds can sometimes vary quite a bit.
For coders
Our script was written using the PineCoders Coding Conventions for Pine .
The description was formatted using the techniques explained in the How We Write and Format Script Descriptions PineCoders publication.
Bits and pieces of code were lifted from the MTF Selection Framework and the MTF Oscillator Framework , also by PineCoders.
█ THANKS
Thanks to dgtrd for suggesting to add the channel using standard deviation.
Thanks to adolgov for helpful suggestions on calculations and visuals.
Look first. Then leap.
Weekly/Daily/Hourly/Minutes Colored Background IntervalsThis is my "Weekly/Daily/Hourly/Minutes Colored Background Intervals" assistant. I wouldn't describe it as an indicator, it just exhibits coloration of referenced periods of time with bgcolor() in Pine. With the arrival of 2021, I pondered the necessity of needing a visualization pre-2021 to visually recognize periodicity of market movements by the week, day, hour, or an adjustable period of minutes. While this script is simply generic, I hope you may find useful in your endeavors as a member on TradingView.
Explaining the script's usage, the "Minutes" input can be adjusted from anywhere between 5-55 minutes for only intraday. This can be modified to accommodate 90 minutes (1.5hrs) or any other minutes period desirable by tweaking certain numbers up to 1440. Minutes and Hourly backgrounds are disabled by default for most daily traders. Changing the input() code to `true` will provide them on by default when the script loads, if you choose that route. Each time periods background color is enable/disable capable. All of the colors are easily adjustable to any combination you can ponder for your visual acuity with the color swatch provided by input(type=input.color). The coloring can be "swapped" by input() depending on how you wish to start and end the day visually. I thought this would come in handy. The weekly background can have different starting points, whether it be Sunday, Monday, or any other day such as Friday for example.
The entire script's contents isn't intended for complete re-use as is for publicly published scripts. It's more along the lines of code that could be used to personally modify indicators you have, depending on the time frames you may actually be trading on. The code is basically modular, so you can use bits and pieces of it in your personally modified Pine Editor scripts that you wish to customize for yourself. I will say that the isXxx() functions are completely reusable in any script without any need for author permission inquiries from me, as easy as copy and paste. Those may come in handy for many folks. If you find them useful in certain circumstances, use isXxx() functions as you please. Day of the week detection by functions will have applications beyond my current intended use for them.
Of notable mention, this is a miniature lesson by example of how the new input(type=input.color) may be used. I'm also using `var` inside functions to aid in computational efficiency of the script runtime. The colors are permanently stored at the very beginning of the scripts operation inside the function and just reused from that point onward. Its a rare use case, but well suited for this scripts intention. Once again I have demonstrated the "Power of Pine" for developers of any experience level to learn from via code elegance.
When available time provides itself, I will consider your inquiries, thoughts, and concepts presented below in the comments section, should you have any questions or comments regarding this indicator. When my indicators achieve more prevalent use by TV members , I may implement more ideas when they present themselves as worthy additions. Have a profitable future everyone!
BRT Signals Buy / Sell v2Title: BRT Signals Buy/Sell v2
Description:
The BRT Signals Buy/Sell v2 script is an innovative and original trading indicator designed to generate precise buy and sell signals by uniquely combining several advanced technical analysis tools. This script introduces new methodologies not found in existing public scripts, offering traders enhanced accuracy and customization.
Key Original Features:
Proprietary Mean Reversion Channel (MRC) Oscillator:
Unlike traditional oscillators, our MRC oscillator is developed using a customized SuperSmoother function, transforming the mean reversion concept into a dynamic oscillator ranging from 0 to 100.
This unique approach allows for more responsive detection of overbought and oversold conditions, setting it apart from standard oscillators.
Advanced Moving Average Options with Jurik Moving Average (JMA):
Incorporates the Jurik Moving Average (JMA), an advanced MA that offers low lag and high smoothness, which is rarely included in public scripts due to its complexity.
Provides multiple MA types (EMA, SMA, RMA, VWMA, WMA, Wilders MA, JMA) for unparalleled customization, enabling traders to fine-tune the indicator to their specific strategies.
Enhanced ADX Trend Strength Filter:
Integrates a custom implementation of the Average Directional Index (ADX) with proprietary modifications to measure trend strength more accurately.
Our script's ADX filter reduces lag and improves the detection of strong trends, a feature not commonly available in other indicators.
Dual Signal Sensitivity Filters:
Introduces two types of signal sensitivity filters (Signal Sensitivity Type 1 and Type 2) that can be independently enabled or disabled.
This dual-filter system is a novel feature that allows for refined control over signal generation, enhancing the script's adaptability.
Sophisticated Labeling and Alert System:
Features a customizable labeling system with various styles and sizes, providing clear and immediate visual cues on the chart.
Includes meticulously configured alert conditions that work seamlessly with the script's unique logic, ensuring timely notifications.
How It Works:
Buy Signal:
Generated when the proprietary MRC oscillator value increases compared to its previous value, indicating upward momentum detected by our unique algorithm.
Price is above the selected moving average (if the EMA filter is enabled), confirming a bullish trend with enhanced precision due to the advanced MA options.
ADX conditions are met using our improved calculation method, ensuring signals occur only during strong uptrends.
Sell Signal:
Triggered when the MRC oscillator value decreases compared to its previous value, signaling downward momentum identified by our custom oscillator.
Price is below the selected moving average (if the EMA filter is enabled), confirming a bearish trend with greater accuracy.
ADX conditions are met, indicating strong downtrends, thanks to our proprietary enhancements to the ADX indicator.
Original Concepts and Calculations:
Customized SuperSmoother Filter: Our version of the SuperSmoother filter is tailored to work specifically with the MRC oscillator, providing smoother and more responsive signals than standard implementations.
Proprietary ADX Enhancements: We have modified the traditional ADX formula to better capture trend strength and direction, reducing lag and improving reliability in various market conditions.
Integration of Advanced Indicators: The script uniquely combines advanced indicators like JMA and our custom MRC oscillator, offering functionalities not found in other public scripts.
Usage Instructions:
Parameter Configuration:
Lookback Period: Adjusts the sensitivity of the Mean Reversion Channel to suit different market conditions.
Timeframe Selection: Analyze different timeframes independent of the chart's timeframe for multi-timeframe analysis.
MA Length and Type: Choose from various moving averages, including the advanced JMA, to align with your trading preferences.
Signal Sensitivity Filters: Enable or disable the EMA and ADX filters to refine signal accuracy based on your strategy.
Visual Aids and Alerts:
Customize label styles and sizes for optimal visualization on the chart.
Set up alerts using the built-in alert conditions to receive real-time notifications aligned with the script's unique logic.
Benefits of Originality:
Enhanced Signal Accuracy: The unique combination of advanced indicators and proprietary calculations reduces false signals, improving the quality of trading decisions.
High Adaptability: The script's extensive customization options allow it to be adapted to various assets, timeframes, and trading styles, making it suitable for a wide range of traders.
Unique Analytical Approach: By introducing new methodologies and integrating advanced technical tools in a novel way, this script provides traders with insights not available in other indicators.
Disclaimer:
This indicator is a unique tool developed to assist traders in making informed decisions. It should be used in conjunction with other analysis methods and does not guarantee profitable results. Always practice proper risk management and due diligence.
Money Flow Profile [LuxAlgo]The Money Flow Profile is a charting tool that measures the traded volume or the money flow at all price levels on the market over a specified time period and highlights the relationship between the price of a given asset and the willingness of traders to either buy or sell it, allowing traders to reveal dominant and/or significant price levels and to analyze the trading activity of a particular user-selected range.
This tool combines a volume/money flow profile, a sentiment profile, and price levels, where the right side of the profile highlights the distribution of the traded activity/money flow at different price levels, the left side of the profile highlights the market sentiment at those price levels, and in the middle the price levels.
🔶 USAGE
A volume/money flow profile is an advanced charting tool that displays the traded volume/money flow at different price levels over a specific period. It helps traders visualize where the majority of trading activity/money flow has occurred.
A sentiment profile is a difference between buy and sell volume/money flow aiming to highlight the sentiment/dominance at specific price levels.
Each row of the profile presents figures on volume and money flow specific to price levels.
High volume/money flow nodes indicate areas of high activity and are likely to act as support or resistance in the future. They attract price and try to hold it there. Conversely, low-volume nodes are areas with low trading activity, that are less subject to get revisited by the price. The market often bounces right over these levels, not staying for long. The "Profile Heatmap" option of the script helps to better emphasize the trading activity within each areas.
By measuring the traded activity at each price level the script presents an ability to highlight the consolidation zones, in other words, highlights accumulation and distribution zones. When the price moves toward one end of the consolidation and volume pick up, it can foreshadow a potential breakout.
Level of Significance, Point of Control, Highest Sentiment Zone, and Profile Price levels are some of the other profile-related options available with the script.
🔶 SETTINGS
The script takes into account user-defined parameters and plots the profiles, where detailed usage for each user-defined input parameter in indicator settings is provided with the related input's tooltip.
🔹 Profile Generic Settings
Lookback Length / Fixed Range: Sets the lookback length.
Profile Source: Sets the profile source, Volume, or Money Flow.
🔹 Profile Presentation Settings
Volume/Money Flow Profile: Toggles the visibility of the Volume/Money Flow Profile.
High Traded Nodes: Threshold and Color option for high traded nodes.
Average Traded Nodes: Color option for average traded nodes.
Low Traded Nodes: Threshold and Color option for low traded nodes.
🔹 Sentiment Profile Settings
Sentiment Profile: Toggles the visibility of the Sentiment Profile.
Sentiment Polarity Method: Sets the method used to calculate the up/down volume/money flow.
Bullish Nodes: Color option for Bullish Nodes.
Bearish Nodes: Color option for Bearish Nodes.
🔹 Profile Heatmap Settings
Profile Heatmap: Toggles the visibility of the profile heatmap.
Heatmap Source: Sets the source of the profile heatmap, Volume/Money Flow Profile, or Sentiment Profile.
Heatmap Transparency: Control the transparency of the profile heatmap.
🔹 Other Presentation Settings
Level of Significance: Toggles the visibility of the level of significance line/zone.
Consolidation Zones: Toggles the visibility of the consolidation zones.
Consolidation Threshold, Color: Sets the threshold value and zone color.
Highest Sentiment Zone: Toggles the visibility of the highest bullish or bearish sentiment zone.
Profile Price Levels, Color, Size: Toggles the visibility of the profile price levels, and sets the color and the size of the level labels.
Profile Range Background Fill: Toggles the visibility of the profiles range.
🔹 Other Settings
Number of Rows: Specify how many rows each profile histogram will have.
Profile Width %: Alters the width of the rows in the histogram, relative to the profile length
Profile Text Size: Alters the size of the text. Setting to Auto will keep the text within the box limits.
Profile Horizontal Offset: Enables to move profile in the horizontal axis.
🔶 RELATED SCRIPTS
Liquidity-Sentiment-Profile
Swing-Volume-Profiles
For more and other conceptual scripts you are kindly invited to visit LuxAlgo-Scripts .
Cryptosmart Trading Tool (by heswaikcrypt)Introducing the Cryptosmart Trading Tool (CSTP) - An optimized into Market Sentiment and direction tool
The Cryptosmart Trading Tool (CSTP) is an advanced indicator developed to provide valuable insights into market sentiment and direction. This tool combines existing TA tools and intelligently develops smart algorithms to empower traders with a deeper understanding of market dynamics. Some classic elements are included in the scripting, such as the exponential moving average (EMA), volume, and Relative Strength Index (RSI), to provide a comprehensive analysis of market conditions. By combining these indicators, the script aims to capture different aspects of market sentiment and enhance the accuracy of the analysis.
The Cryptosmart Trading Tool (CSTP) incorporates a unique algorithm that combines trend following analysis, momentum analysis, and volume analysis to provide insights into market sentiment and price action.
Trend Following Analysis:
The algorithm utilizes two exponential moving averages (EMAs): EMA1 and EMA2.
When EMA1 crosses above EMA2, it indicates an uptrend (isUptrend).
When EMA1 crosses below EMA2, it indicates a downtrend.
You adjust the input value to suit your trading strategy, however, 7, 8, 21, 34, and 200 have been tested to produce a fine tuned output.
The bar color indicates blue for bullish sentiment (is uptrend) and white for bearish sentiment (is downtrend).
Momentum Analysis:
The relative strength index (RSI) is calculated based on the closing prices and the specified RSI length.
RSI values above 70 indicate overbought conditions (isOverbought).
RSI values below 30 indicate oversold conditions (isOversold).
Using the isOversoldExtreme and isOverboughtExtreme, the CSTP algorithm detect extreme over bought and oversold conditions and alert with label color green and red.
Volume Analysis:
The algorithm calculates the average volume over a specified length (averageVolume).
The volume ratio is obtained by dividing the current volume by the average volume.
High volume activity is identified when the volume ratio is greater than 1 (isHighVolume).
Major Flip and Arrow Plots:
Major bullish or bearish flips are identified when EMA1 crosses above EMA2 with RSI values above 50 and high volume activity (isBullishFlip) or when EMA1 crosses below EMA2 with RSI values below 50 and high volume activity (isBearishFlip).
Arrow plots are used to display trend direction, upward arrows for major bullish flips and downward arrows for major bearish flips.
The algorithm calculates the bullBearRatio and RSIValueAtFlip to capture the volume ratio and RSI values at major flips.
The bullishRatio and bearishRatio variables store the volume ratio values for the corresponding trend conditions.
Labels are also displayed on the chart to provide information about EMA values and RSI values. This can be independently disabled by the user
The uniqueness of the CSTP algorithm lies in its combination of trend following analysis, momentum analysis, and volume analysis. By considering these factors, the algorithm provides insights into market sentiment and price action. The use of EMAs, RSIs, and volume ratios allows traders to identify potential trends, overbought/oversold conditions, and high volume activity. The visual representation of bar colors and arrows enhances the ease of understanding the sentiment and major flips. CSTP is uniquely presented by using dots, arrows, candlestick colors, and shape labels to indicate the market scenario. This is explained below.
By leveraging multiple indicators and analysis techniques, CSTP aims to provide traders with a holistic understanding of market dynamics and enhance their decision-making process.
It's important to note that while the individual components used in CSTP are not new or unique on their own, the specific algorithm, parameters, and calculations used within the script are what make it distinctive and valuable. By carefully integrating these components, CSTP generates results that are greater than the sum of its parts, providing traders with a comprehensive analysis of market conditions.
Through extensive research, analysis, and testing, we have created a useful tool, fine-tuned to optimize the accuracy and reliability of the script's output, which can assist traders in making more informed trading decisions.
How to Use:
1. Apply the CSTP Script:
- Apply the CSTP script to your TradingView chart to start analyzing market conditions. (Access instructions can be found in the author's details section.)
- Ensure you have the latest version of TradingView to access all the features and functionalities.
2. Customize Parameters:
- Customize the input variables to match your trading preferences and adapt the tool to different markets.
- Experiment with different settings, such as RSI Length and EMA Lengths, to find the optimal configuration for your trading strategy.
3. Interpret the Color-Coded Bars and Wave Labels:
- Green bars indicate bullish sentiment, suggesting potential buying opportunities.
- Red bars indicate bearish sentiment, indicating potential selling opportunities.
- Blue and white bars represent sentiment backed by smart money liquidity, adding an extra layer of analysis.
- The wave labels provide insights into market structure and potential wave patterns.
4. Combine with Candlestick philosophy strategy and parameters used:
- Wait for candlestick closure before making trading decisions based on CSTP's analysis.
- Consider the EMA (yellow) line as an additional tool to confirm entry or exit points.
- Combining CSTP's analysis with candlestick patterns can enhance your decision-making process and improve trade timing.
- Volume Analysis: Compares the current volume to the Simple Moving Average (SMA) of volume using the RSI Length parameter to determine high-volume periods.
- Color-Coded Bars: The color of the bars represents different market sentiments based on all the parameters used including Relative strength index, bullish and bearish
divergence and volume conditions.
- Open Close Cross (OCC) Alerts: Generates dot alert with color code (red=Bearish, green=Bullish) when there is a crossover or crossunder between the close and open
prices
Important Notes:
- Candlestick color matter a lot as then show the sentiment of the market at a given time. and it is an added advantage for a trader to understand candlestick Psychology.
Candlestick conditions
I will use this BINANCE:MTLUSDT chart to explain how it works
Long green Arrow: Bullish call, with green isBullish arrow
Long red Arrow: Bearish call, with isBearish arrow
Blue with red wick and tape: this indicate a bearish sentiment but with some bullish volume, this position is dice which requires a proper understanding of entry and exit. when if this said candle stick closes below the EMA line, wait for the the next candle after it t determining your move. If the next one closes above it, then the direction is still bullish, else the direction has flipped bearish. (special scenario: in the range or consolidative market phase, you may need to wait 3-7 day candle close before you decide. use the coloration as guide to help with your decision making).
Blue with green wick and tape: this indicated strong bullish sentiment backed by liquidity to push. it is important to not the candle close, if the candle closes above the EMA (7 and/or 21) that validates the move, else, you may need to wait for the next candle close to determine the move and momentum of the market. Example is the $COOMPUST chart
White with green wick and tape: this works just like the "Blue candlestick with red wick and tape". follow same procedure
White with red wick and tape: White candle with red wick, indicates bearish sentiment backed by available market liquidity at the time.
If you see the market moving upward and the candlestick keep closing with white color, it is an indication of inorganic move (Check BITFINEX:SUIUST ) the best thing to do is to wait at resistance. a similar scenario can be seen here
Market test:
below are picture of the indicator tested on different assets
CRYPTOCAP:BNB
AUD
Tesla
it is best to book an entry after an arrow indicate (especially for a bullish market) and the candle closes above the EMA (Yellow line).
Risk management.
- ALWAYS PROTECT YOUR PROFIT WHEN YOU SEE ON. THE MARKET IS DYNAMIC
- Trading involves risks, and no tool can guarantee absolute accuracy in predicting market direction. Conduct thorough research and exercise caution when making trading decisions.
- Apply proper risk management strategies and adjust position sizes according to your risk tolerance.
- Stay updated with market news and events that may impact your trading decisions.
Conclusion:
The Cryptosmart Trading Tool (CSTP) provides traders with a powerful advantage by offering valuable insights into market sentiment and direction. To gain access or trial, refer to the author's details section. This indicator combines various analysis techniques to provide a comprehensive view of the market. Remember to apply your own analysis and expertise in conjunction with CSTP for optimal results.
This indicator combines my 8years of trading experience. Enjoy
Disclaimer:
Trading involves risks, and the CSTP script is designed to assist traders by providing valuable insights. It should be used as a supplement to your own analysis and expertise. Exercise caution and make informed trading decisions based on your own research.
Fractal Basic Chart Patterns [MyTradingCoder]This script is something that I made a long time ago in my early days of learning Pine. It is not in development anymore but has some unique and impressive utility that will help the community. This script will fractally identify chart patterns(iH&S,H&S,W,M) on any chart and timeframe. Most scripts have limitations that make the user have to adjust various parameters to get the desired result to show up on the chart. Lower input values may show smaller patterns, whereas vise versa, higher input values may show larger patterns, but you never seem to get the best of both worlds with these types of scripts. Some users may appreciate the vast majority of input parameters that most scripts provide, but others like myself may find it restrictive and annoying, as you wont get large patterns AND small patterns simultaneously.
All details needed to understand how to use the script are listed below. I will be creating new and well written scripts in the near future moving forward to help the community as best as I can, and just wanted to make it clear that this particular script is just something that I had on the backburner from a very long time ago, before I was a "Pinescript Maven" :) Enjoy!
Available Patterns:
- W Pattern
- M Pattern
- Head and Shoulders Pattern
- Inverse Head and Shoulder Pattern
Customizable inputs:
- Option to specify minimum bars required to consider a pattern.(Can be helpful if you don't want to see lower timeframe patterns, as some may not look like patterns, but if you drop the timeframe and go to the same time, there will be a pattern there on a lower scale)
- Boolean Inputs to Enable/Disable Certain Patterns
Available Alert Options:
- W Pattern Alert
- M Pattern Alert
- H&S Pattern Alert
- iH&S Pattern Alert
User Manual:
- Patterns will be drawn/detected/finalized on the bar close when the neckline is broken
- Green/Red lines represent the historical structure used to identify each pattern
- Blue dashed lines represent the projected price action based on the pattern completing
- Alerts/Indicator will not repaint(Can use 'once per bar' or 'once per bar close' and behavior will be identical. Code is optimized.)
- May have trouble on assets with daily/weekend time gaps with the projected price action dashed line due to time being used as the xloc. If this becomes a problem, leave a comment below and I will consider bringing this back into development and convert to bar_index as xloc to fix the issue.
- Patterns can be all shapes and sizes, hence the beauty of this indicator
- Leave a comment below for any questions or requests and give the indicator a like if you find it useful
Bogdan Ciocoiu - Sniper EntryWhat is Sniper Entry
Sniper Entry is a set indicator that encapsulates a collection of pre-configured scripts using specific variables that enable users to extract signals by interpreting market behaviour quickly, suitable for 1-3min scalping. This instrument is a tool that acts as a confluence for traders to make decisions concerning current market conditions. This indicator does not apply solely to an asset.
What Sniper Entry is not
Sniper Entry is not interpreting fundamental analysis and will also not be providing out of box market signals. Instead, it will provide a collection of integrated and significantly improved open-source subscripts designed to help traders speculate on market trends. Traders must apply their strategies and configure Sniper Entry accordingly to maximise the script's output.
Originality and usefulness
The collection of subscripts encapsulated in this tool makes it unique in the Trading View ecosystem. This indicator enables traders to consider entry positions or exit positions by comparing similar algorithms at once.
Its usefulness also emerges from the unique configurations embedded in the indicator's settings, which are different from those of the original scripts.
This indicator's originality is also reflected in how its modules are integrated, including the integration of the settings.
Open-source reuse
I used the following open-source resources, which I simplified significantly and pre-configured for short term scalping. The source codes for the below are already in the public domain, including the following links listed below.
www.tradingview.com (open source)
(open source and generic algorithm)
www.tradingview.com (open source)
(open source)
(open source)
www.tradingview.com (generic MA algorithm and open source)
(generic VWAP algorithm and open source)
String Manipulation Framework [PineCoders FAQ]█ OVERVIEW
This script provides string manipulation functions to help Pine coders.
█ FUNCTIONS PROVIDED
f_strLeft(_str, _n)
Function returning the leftmost `_n` characters in `_str`.
f_strRight(_str, _n)
Function returning the rightmost `_n` characters in `_str`.
f_strMid(_str, _from, _to)
Function returning the substring of `_str` from character position `_from` to `_to` inclusively.
f_strLeftOf(_str, _of)
Function returning the sub-string of `_str` to the left of the `_of` separating character.
f_strRightOf(_str, _of)
Function returning the sub-string of `_str` to the right of the `_of` separating character.
f_strCharPos(_str, _chr)
Function returning the position of the first occurrence of `_chr` in `_str`, where the first character position is 0. Returns -1 if the character is not found.
f_strReplace(_src, _pos, _str)
Function that replaces a character at position `_pos` in the `_src` string with the `_str` character or string.
f_tickFormat()
Function returning a format string usable with `tostring()` to round a value to the symbol's tick precision.
f_tostringPad(_val, _fmt)
Function returning a string representation of a numeric `_val` using a special `_fmt` string allowing all strings to be of the same width, to help align columns of values.
`f_tostringPad()`
Using the functions should be straightforward, but `f_tostringPad()` requires more explanations. Its purpose is to help coders produce columns of fixed-width string representations of numbers which can be used to produce columns of numbers that vertically align neatly in labels, something that comes in handy when, for example, you need to center columns, yet still produce numbers of various lengths that nonetheless align.
While the formatting string used with this function resembles the one used in tostring() , it has a few additional characteristics:
• The question mark (" ? ") is used to indicate that padding is needed.
• If negative numbers must be handled by the function, the first character of the formatting string must be a minus sign ("-"),
otherwise the unary minus sign of negative numbers will be stripped out.
• You will produce more predictable results by using "0" rather than "#" in the formatting string.
You can experiment with `f_tostringPad()` formatting strings by changing the one used in the script's inputs and see the results on the chart.
These are some valid examples of formatting strings that can be used with `f_tostringPad()`:
"???0": forces strings to be four units wide, in all-positive "int" format.
"-???0": forces strings to be four units wide, plus room for a unary minus sign in the first position, in "int" format.
"???0.0": forces strings to be four units wide to the left of the point, all-positive, with a decimal point and then a mantissa rounded to a single digit.
"-???0.0?": same as above, but adds a unary minus sign for negative values, and adds a space after the single-digit mantissa.
"?????????0.0": forces the left part of the float to occupy the space of 10 digits, with a decimal point and then a mantissa rounded to a single digit.
█ CHART
The information displayed by this indicator uses the values in the script's Inputs, so you can use them to play around.
The chart shows the following information:
• Column 0 : The numeric input values in a centered column, converted to strings using tostring() without a formatting argument.
• Column 1 : Shows the values formatted using `f_tostringPad()` with the formatting string from the inputs.
• Column 2 : Shows the values formatted using `f_tostringPad()` but with only the part of the formatting string left of the decimal point, if it contains one.
• Column 3 : Shows the values formatted using `f_tostringPad()` but with the part of the formatting string left of the decimal point,
to which is added the right part of the `f_tostringPad()` formatting string, to obtain the precision in ticks of the symbol the chart is on.
• Column 4 : Shows the result of using the other string manipulation functions in the script on the source string supplied in the inputs.
It also demonstrates how to split up a label in two distinct parts so that you can vertically align columns when the leftmost part contains strings with varying lengths.
You will see in our code how we construct this column in two steps.
█ LIMITATIONS
The Pine runtime is optimized for number crunching. Too many string manipulations will take a toll on the performance of your scripts, as can readily be seen with the running time of this script. To minimize the impact of using string manipulation functions in your scripts, consider limiting their calculation to the first or last bar of the dataset when possible. This can be achieved by using the var keyword when declaring variables containing the result of your string manipulations, or by enclosing blocks of code in if blocks using barstate.isfirst or barstate.islast .
█ NOTES
To understand the challenges we face when trying to align strings vertically, it is useful to know that:
• As is the case in many other places in the TadingView UI and other docs, the Pine runtime uses the MS Trebuchet font to display label text.
• Trebuchet uses proportionally-spaced letters (a "W" takes more horizontal space than an "I"), but fixed-space digits (a "1" takes the same horizontal space as a "3").
Digits all use a figure space width, and it is this property that allows us to align numbers vertically.
The fact that letters are proportionally spaced is the reason why we can't vertically align columns using a "legend" + ":" `+ value structure when the "legend" part varies in width.
• The unary minus sign is the width of a punctuation space . We use this property to pad the beginning of numbers
when you use a "-" as the first character of the `f_tostringPad()` formatting string.
Our script was written using the PineCoders Coding Conventions for Pine .
The description was formatted using the techniques explained in the How We Write and Format Script Descriptions PineCoders publication.
█ THANKS
Thanks to LonesomeTheBlue for the `f_strReplace()` function.
Look first. Then leap.
Dynamic Equalizer [DW]This is an experimental study inspired by techniques primarily utilized in the visual and audio processing worlds.
This study is designed to serve as a pre or post processing filter designer that allows you to shape the frequency spectrum of your data on a more "in-depth" level.
First the data is fed through my Band-Shelf Equalizer function.
The EQ in this script works by dividing the input signal into 6 bands and 2 shelves using a series of roofing filters.
The bands are then gain adjusted recursively (in %) to match source as closely as possible at unity gain.
The recursive adjustment size can be changed using the "Gain Adjustment Increment" input, which will affect how tightly the resulting filter approximates source at unity.
The frequency range of each band is adjustable via the period inputs. In default settings, these are the ranges:
-> Low Shelf : 256+ Samples Per Cycle. This shelf is the largest trend component of the signal. Unlike the other bands and shelf, this shelf is not zero mean unless source data is.
-> Band 1 : 128 - 256 Samples Per Cycle. This band is a moderate trend and low cyclic component of the signal.
-> Band 2 : 64 - 128 Samples Per Cycle. This band is a mild trend and moderate cyclic component of the signal.
-> Band 3 : 32 - 64 Samples Per Cycle. This band is a high cyclic component of the signal.
-> Band 4 : 16 - 32 Samples Per Cycle. This band is a high cyclic component of the signal.
-> Band 5 : 8 - 16 Samples Per Cycle. This band is a moderate cyclic and mild to moderate noise component of the signal.
-> Band 6 : 4 - 8 Samples Per Cycle. This band is a high noise component of the signal.
-> High Shelf : 4- Samples Per Cycle. This shelf is primarily noise.
Each band and shelf can be manually gain adjusted via their respective inputs.
After EQ processing, each band and shelf is then optionally fed through my Peak Envelope Compressor function for dynamics control.
The compressor in this script works by reducing band power by a specified percentage when it exceeds a user defined percentage of the peak envelope.
The peak envelope measures maximum power of the band over its period range multiplied by a user defined integer.
There is an option included to apply Butterworth smoothing to the envelope as well, which will alter the shape of the compressor.
If you want an envelope that quickly responds to power peaks, use little to no smoothing. If you desire something more static, use a large smoothing period.
Attack and release are included in the algorithm to shape the sensitivity of the compressor.
Attack controls how many bars it takes from being triggered for attenuation to reach its target amount.
Release controls how many bars it takes from being un-triggered for attenuation to reach back to 0.
In addition, the compressor is equipped with parallel processing.
The "Parallel Mix" inputs control the amount of compressed vs non-compressed signal presence in the final output.
And of course, the compressor has a post-processing gain input (in %) to fine-tune the presence of the band.
For easy visual tuning, you can view each independent band's magnitude or power by selecting them in the display inputs.
This display setup can also be beneficial analytically if you wish to analyze specific frequency components of the source signal.
The default preset for this script is meant to show how versatile EQ filtering and compression can be for technical analysis.
The EQ preset detrends the data, moderately smooths the data, and emphasizes dominant cyclical ranges.
The compression preset provides fast, moderately heavy shaping to dial in dynamics and reduce transient effects.
The resulting curve is a great filter for responsively analyzing cyclical momentum.
The script is also fully equipped with outputs that can be used externally by other scripts.
You can integrate these external outputs with your own script by using a source input. Simply select the desired output from the dropdown tab on your script.
Multiband filtering and compression are concepts that are not conventionally used in the world of finance.
However, the versatile capabilities of these concepts make this a wonderful tool to have in the arsenal.
By surgically adjusting separate frequency components of a signal, you're able to design a wide variety of filters with unique responses for a vast array of applications.
Play around with the settings and see what kinds of filters you can design!
---------------------------------------------------------
This is a premium script, and access is granted on an invite-only basis.
To gain access, get a copy of the script overview, or for additional inquiries, send me a direct message.
I look forward to hearing from you!
---------------------------------------------------------
General Disclaimer:
Trading stocks, futures, Forex, options, ETFs, cryptocurrencies or any other financial instrument has large potential rewards, but also large potential risk.
You must be aware of the risks and be willing to accept them in order to invest in stocks, futures, Forex, options, ETFs or cryptocurrencies.
Don’t trade with money you can’t afford to lose.
This is neither a solicitation nor an offer to Buy/Sell stocks, futures, Forex, options, ETFs, cryptocurrencies or any other financial instrument.
No representation is being made that any account will or is likely to achieve profits or losses of any kind.
The past performance of any trading system or methodology is not necessarily indicative of future results.
---------------------------------------------------------
NOTE: Unlike standard tools of this nature in other applications, I scaled the signals in % rather than dB, mainly since it's proven so far to be more user-friendly to keep things linear on here.
In addition, no transitions to frequency domain are done in this script. This EQ is an experimental variant that processes in the time domain and relies on a network of roofing filters.
When changing cutoff periods, make sure they are organized in descending order with low shelf as the highest period, and high shelf as the lowest period.
Using non-descending lengths may result in an undesired output.
Lastly, when changing cutoff periods, parts of the spectrum may leak slightly differently between bands, so the "Gain Match Adjustment Increment" may need to be changed as well if you want it to match as closely as possible at unity.
Despite these shortcomings, this tool functions surprisingly well, especially with the default periods, and it's quickly become one of my favorites. I hope you all enjoy it!
[ALL-IN-ONE] Algorithmic S/R and Pivots and Long Term LevelsHello my trading padawans.
Hope you're all having a blast
Here's the invite-only script of the week. The ALL-IN-ONE saga continues with another script.
This time, I compiled a lot of algorithmic supports and resistances (S/R) - to be used with any indicators out there.
Those S/R are universal and work with all asset classes (FOREX, CRYPTO, INDICES, STOCKS, COMMODITIES, ...)
No one can predicts which S/R will stop a move - generally - the high timeframes S/R + the SMAs with a big input value - work as strong walls often forcing the candles to retrace a bit short-term.
At Today's post (October, 25th 2019 - 12 pm UTC-4), we see how useful they were, to identify how high BTC/USD could go before retracing.
I. 💎 SCRIPTS ACCESS 💎
1.🖐️ Access can only be requested through my website.
2.🖐️ My website URL is in this script signature at the very bottom (you'll have to scroll down a bit and going past the long description) and in my profile status available here : Daveatt
3.🖐️ A tutorial article/video will be provided on those sub mentioned links + Tradingview
4.🖐️ You obviously can contact me directly for more information
II. 🔎 ALL-IN-ONE Supports and Resistances 🔎
You can display the algorithmic S/R, and/or pivots, (not finished yet) and the long terms levels.
For the 3 types of S/R, I pre-selected those that I think are the most relevant and useful for everyone. Please let me know if you'd like me to add/remove some.
All those listed by default are important and provide a MAP for a trader.
They give great take profits zones, levels where it's better to wait for a pullback before entering.
2.1 👁️🗨️ S/R mode 👁️🗨️
Each type of S/R can be displayed or not.
2.2 📱 Mobile optimized display 📱
Preview : imgur.com I posted 2 images there
The script is made using the newest version of Pinescript, and displaying small labels for every support/resistance.
✨ This will come in handy for mobile users - they'll get nice looking labels displayed at the right of their chart.
Each S/R type have its own labels and label position. The script users can activate/deactivate them at will
Let's review quickly each one.
2.3 Algorithmic SMAs
I cherish, love, sometimes despite them, but they're very relevant for all asset classes. The tool displays as many relevant algorithmic and generic SMAs that I could think of.
The indicator lists about 18 different SMAs in multiple timeframes.
2.4 Pivots
7 pivots are displayed (S1/S2/S3/P/R1/R2/R3)
You can choose one of 4 pivot point types:
- Traditional
- Woodie
- Fibonacci
- Camarilla.
The fun doesn't stop here. You can also select a timeframe between Daily/Weekly/Monthly/Yearly for those pivots.
For INDICES, for example, I use a lot the daily Traditional Pivots.
2.5 Long Terms Levels
Display by default the highest/lowest weekly/monthly/quarterly/monthly levels.
The scripts user can chose to select the previous highest/lowest also.
-------------------------------------------------------------------------------------------------------------------------------------
If you have any doubts or questions, please hit me up directly or ask in the comments section of this script.
I'll never claim I have the best trading methodology or indicators.
You only will judge and I'll appreciate all the questions and feedback you're sending my way.
They helped me a ton for developing indicators based on all the requests I received.
May the force 💪 be with you all 🥳.
Dave
G-Bot v3Overview:
G-Bot is an invite-only Pine Script tailored for traders seeking a precise, automated breakout strategy. This closed-source script integrates with 3Commas via API to execute trades seamlessly, combining classic indicators with proprietary logic to identify high-probability breakouts. G-Bot stands out by filtering market noise through a unique confluence of signals, offering adaptive risk management, and employing advanced alert deduplication to ensure reliable automation. Its purpose-built design delivers actionable signals for traders prioritizing consistency and efficiency in trending markets.
What It Does and How It Works:
G-Bot generates trade signals by evaluating four key market dimensions—trend, price action, momentum, and volume—on each 60-minute bar. The script’s core components and their roles are:
Trend Detection (EMAs): Confirms trend direction by checking if the 5-period EMA is above (bullish) or below (bearish) the 6-period EMA, with the price positioned accordingly (above the 5-period EMA for longs, below for shorts). The tight EMA pairing is optimized for the 60-minute timeframe to capture sustained trends while minimizing lag.
Price Action Trigger (Swing Highs/Lows): Identifies breakouts when the price crosses above the previous swing high (for longs) or below the previous swing low (for shorts), using a period lookback to focus on recent price pivots. This ensures entries align with significant market moves.
Momentum Filter (RSI): Validates breakouts by requiring RSI to fall within moderated ranges. These ranges avoid overbought/oversold extremes, prioritizing entries with balanced momentum to enhance trade reliability.
Volume Confirmation (3-period SMA): Requires volume to exceed its 3-period SMA, confirming that breakouts are driven by strong market participation, reducing the risk of false moves.
Risk Management (14-period ATR): Calculates stop-loss distances (ATR) and trailing stops (ATR and ATR-point offset) to align trades with current volatility, protecting capital and locking in profits.
These components work together to create a disciplined system: the EMAs establish trend context, swing breaks confirm price momentum, RSI filters for optimal entry timing, and volume ensures market conviction. This confluence minimizes false signals, a critical advantage for hourly breakout trading.
Why It’s Original and Valuable:
G-Bot’s value lies in its meticulous integration of standard indicators into a non-standard, automation-focused system. Its unique features include:
Curated Signal Confluence: Unlike generic breakout scripts that rely on single-indicator triggers (e.g., EMA crossovers), G-Bot requires simultaneous alignment of trend, price action, momentum, and volume. This multi-layered approach, reduces noise and prioritizes high-conviction setups, addressing a common flaw in simpler strategies.
Proprietary Alert Deduplication: G-Bot employs a custom mechanism to prevent redundant alerts, using a 1-second minimum gap and bar-index tracking. This ensures signals are actionable and compatible with 3Commas’ high-frequency automation, a feature not found in typical Pine Scripts.
Adaptive Position Sizing: The script calculates trade sizes based on user inputs (1-5% equity risk, max USD cap, equity threshold) and ATR-derived stop distances, ensuring positions reflect both account size and market conditions. This dynamic approach enhances risk control beyond static sizing methods.
3Commas API Optimization: G-Bot generates JSON-formatted alerts with precise position sizing and exit instructions, enabling seamless integration with 3Commas bots. This level of automation, paired with detailed Telegram alerts for monitoring, streamlines the trading process.
Visual Clarity: On-chart visuals—green triangles for long entries, red triangles for shorts, orange/teal lines for swing levels, yellow circles for price crosses—provide immediate insight into signal triggers, allowing traders to validate setups without accessing the code.
G-Bot is not a repackaging of public code but a specialized tool that transforms familiar indicators into a robust, automated breakout system. Its originality lies in the synergy of its components, proprietary alert handling, and trader-centric automation, justifying its invite-only status.
How to Use:
Setup: Apply G-Bot to BITGET’s BTCUSDT.P chart on a 60-minute timeframe.
3Commas Configuration: Enter your 3Commas API Secret Key and Bot UUID in the script’s input settings to enable webhook integration.
Risk Parameters: Adjust Risk % (1-5%), Max Risk ($), and Equity Threshold ($) to align position sizing with your account and risk tolerance.
Webhook Setup: Configure 3Commas to receive JSON alerts for automated trade execution. Optionally, connect Telegram for detailed signal notifications.
Monitoring: Use on-chart visuals to track signals:
Green triangles (below bars) mark long entries; red triangles (above bars) mark shorts.
Orange lines show swing highs; teal lines show swing lows.
Yellow circles indicate price crosses; purple crosses highlight volume confirmation.
Testing: Backtest G-Bot in a demo environment to validate performance and ensure compatibility with your trading strategy.
Setup Notes : G-Bot is a single, self-contained script for BTCUSDT.P on 60-minute charts, with all features accessible via user inputs. No additional scripts or passwords are required, ensuring compliance with TradingView’s single-publication rule.
Disclaimer: Trading involves significant risks, and past performance is not indicative of future results. Thoroughly test G-Bot in a demo environment before deploying it in live markets.
Full setup support will be provided
Uptrick: Portfolio Allocation DiversificationIntro
The Uptrick: Portfolio Allocation Diversification script is designed to help traders and investors manage multiple assets simultaneously. It generates signals based on various trading systems, allocates capital using different diversification methods, and displays real-time metrics and performance tables on the chart. The indicator compares active trading strategies with a separate long-term holding (HODL) simulation, allowing you to see how a systematic trading approach stacks up against a simple buy-and-hold strategy.
------------------------------------------------------------------------
Trading System Selection
1. No signals (none)
In this mode, the script does not produce bullish or bearish indicators; every asset stays in a neutral stance. This setup is useful if you prefer to observe how capital might be distributed based solely on the chosen diversification method, with no influence from directional signals.
2. rsi – neutral
This mode uses an index-based measure of whether an asset appears overbought or oversold. It generates a bearish signal if market conditions point to overbought territory, and a bullish signal if they indicate oversold territory. If neither extreme surfaces, it remains neutral. Some traders apply this in sideways or range-bound conditions, where overbought and oversold levels often hint at possible turning points. It does not specifically account for divergence patterns.
3. rsi – long only
In this setting, the system watches for instances where momentum readings strengthen even if the asset’s price is still under pressure or setting new lows. It also considers oversold levels as potential signals for a bullish setup. When such conditions emerge, the script flags a possible move to the upside, ignoring indications that might otherwise suggest a bearish trend. This approach is generally favored by those who want to concentrate exclusively on identifying price recoveries.
4. rsi – short only
Here, the script focuses on spotting signs of deteriorating momentum while an asset’s price remains relatively high or attempts further gains. It also checks whether the market is drifting into overbought territory, suggesting a potential decline. Under such conditions, it issues a bearish signal. It provides no bullish alerts, making it particularly suitable for traders who look to take advantage of overvalued scenarios or protect themselves against sudden downward moves.
5. Deviation from fair value
Under this system, the script judges how far the current price may have strayed from what is considered typical, taking into account normal fluctuations. If the asset appears to be trading at an unusually low level compared to that reference, it is flagged as bullish. If it seems abnormally high, a bearish signal is issued. This can be applied in various market environments to seek opportunities that arise from perceived mispricing.
6. Percentile channel valuation
In this mode, the script determines where an asset's price stands within a historical distribution, highlighting whether it has reached unusually high or low territory compared to its recent past. When the price reaches what is deemed an extreme reading, it may indicate that a reversal is more likely. This approach is often used by traders who watch for statistical outliers and potential reversion to a more typical trading range.
7. ATH valuation
This technique involves comparing an asset's current price with its previously recorded peak values. The script then interprets whether the price is positioned so far below the all-time high that it looks discounted, or so close to that high that it could be overextended. Such perspective is favored by market participants who want to see if an asset still has ample room to climb before matching historic extremes, or if it is nearing a possible ceiling.
8. Z-score system
Here, the script measures how far above or below a standard reference average an asset's price may be, translated into standardized units. Substantial negative readings can suggest a price that might be unusually weak, prompting a bullish indication, while large positive readings could signal overextension and lead to a bearish call. This method is useful for traders watching for abrupt deviations from a norm that often invite a reversion to more balanced levels.
RSI Divergence Period
This input is particularly relevant for the RSI - Long Only and RSI - Short Only modes. The period determines how many bars in the past you compare RSI values to detect any divergences.
------------------------------------------------------------------------
Diversification Method
Once the script has determined a bullish, bearish, or neutral stance for each asset, it then calculates how to distribute capital among all included assets. The diversification method sets the weighting logic.
1. None
Gives each asset an equal weight. For example, if you have five included assets, each might get 20 percent. This is a simple baseline.
2. Risk-Adjusted Expected Return Using Volatility Clustering
Emphasizes each asset’s average returns relative to its observed risk or volatility tendencies. Assets that exhibit good risk-adjusted returns combined with moderate or lower volatility may receive higher weights than more volatile or less appealing assets. This helps steer capital toward assets that have historically provided a better ratio of return to risk.
3. Relative Strength
Allocates more capital to assets that show stronger price strength compared to a reference (for example, price above a long-term moving average plus a higher RSI). Assets in clear uptrends may be given higher allocations.
4. Trend-Following Indicators
Examines trend-based signals, like positive momentum measurements or upward-trending strength indicators, to assign more weight to assets demonstrating strong directional moves. This suits those who prefer to latch onto trending markets.
5. Volatility-Adjusted Momentum
Looks for assets that have strong price momentum but relatively subdued volatility. The script tends to reward assets that are trending well yet are not too volatile, aiming for stable upward performance rather than massive swings.
6. Correlation-Based Risk Parity
Attempts to weight assets in such a way that the overall portfolio risk is more balanced. Although it is not an advanced correlation matrix approach in a strict sense, it conceptually scales each asset’s weight so no single outlier heavily dominates.
7. Omega Ratio Maximization
Gives preference to assets with higher omega ratios. This ratio can be interpreted as the probability-weighted gains versus losses. Assets with a favorable skew are given more capital.
8. Liquidity-Weighted Valuation
Considers each asset’s average trading liquidity, such as the combination of volume and price. More liquid assets typically receive a higher allocation because they can be entered or exited with lower slippage. If the trading system signals bullishness, that can further boost the allocation, and if it signals bearishness, the allocation might be set to zero or reduced drastically.
9. Drawdown-Controlled Allocation (DCA)
Examines each asset’s maximum drawdown over a recent window. Assets experiencing lighter drawdowns (thus indicating somewhat less downside volatility) receive higher allocations, aiming for a smoother overall equity curve.
------------------------------------------------------------------------
Portfolio and Allocation Settings
Portfolio Value
Defines how much total capital is available for the strategy-based investment portion. For example, if set to 10,000, then each asset’s monetary allocation is determined by the percentage weighting times 10,000.
Use Fixed Allocation
When enabled, the script calculates the initial allocation percentages after 50 bars of data have passed. It then locks those percentages for the remainder of the backtest or real-time session. This feature allows traders to test a static weighting scenario to see how it differs from recalculating weights at each bar.
------------------------------------------------------------------------
HODL Simulator
The script has a separate simulation that accumulates positions in an asset whenever it appears to be recovering from an undervalued state. This parallel tracking is intended to contrast a simple buy-and-hold approach with the more adaptive allocation methods used elsewhere in the script.
HODL Buy Quantity
Each time an asset transitions from an undervalued state to a recovery phase, the simulator executes a purchase of a predefined quantity. For example, if set to 0.5 units, the system will accumulate this amount whenever conditions indicate a shift away from undervaluation.
HODL Buy Threshold
This parameter determines the level at which the simulation identifies an asset as transitioning out of an undervalued state. When the asset moves above this threshold after previously being classified as undervalued, a buy order is triggered. Over time, the performance of these accumulated positions is tracked, allowing for a comparison between this passive accumulation method and the more dynamic allocation strategy.
------------------------------------------------------------------------
Asset Table and Display Settings
The script displays data in multiple tables directly on your chart. You can toggle these tables on or off and position them in various corners of your TradingView screen.
Asset Info Table Position
This table provides key details for each included asset, displaying:
Symbol – Identifies the trading pair being monitored. This helps users keep track of which assets are included in the portfolio allocation process.
Current Trading Signal – Indicates whether the asset is in a bullish, bearish, or neutral state based on the selected trading system. This assists in quickly identifying which assets are showing potential trade opportunities.
Volatility Approximation – Represents the asset’s historical price fluctuations. Higher volatility suggests greater price swings, which can impact risk management and position sizing.
Liquidity Estimate – Reflects the asset’s market liquidity, often based on trading volume and price activity. More liquid assets tend to have lower transaction costs and reduced slippage, making them more favorable for active strategies.
Risk-Adjusted Return Value – Measures the asset’s returns relative to its risk level. This helps in determining whether an asset is generating efficient returns for the level of volatility it experiences, which is useful when making allocation decisions.
2. Strategy Allocation Table Position
Displays how your selected diversification method converts each asset into an allocation percentage. It also shows how much capital is being invested per asset, the cumulative return, standard performance metrics (for example, Sharpe ratio), and the separate HODL return percentage.
Symbol – Displays the asset being analyzed, ensuring clarity in allocation distribution.
Allocation Percentage – Represents the proportion of total capital assigned to each asset. This value is determined by the selected diversification method and helps traders understand how funds are distributed within the portfolio.
Investment Amount – Converts the allocation percentage into a dollar value based on the total portfolio size. This shows the exact amount being invested in each asset.
Cumulative Return – Tracks the total return of each asset over time, reflecting how well it has performed since the strategy began.
Sharpe Ratio – Evaluates the asset’s return in relation to its risk by comparing excess returns to volatility. A higher Sharpe ratio suggests a more favorable risk-adjusted performance.
Sortino Ratio – Similar to the Sharpe ratio, but focuses only on downside risk, making it more relevant for traders who prioritize minimizing losses.
Omega Ratio – Compares the probability of achieving gains versus losses, helping to assess whether an asset provides an attractive risk-reward balance.
Maximum Drawdown – Measures the largest percentage decline from an asset’s peak value to its lowest point. This metric helps traders understand the worst-case loss scenario.
HODL Return Percentage – Displays the hypothetical return if the asset had been bought and held instead of traded actively, offering a direct comparison between passive accumulation and the active strategy.
3. Profit Table
If the Profit Table is activated, it provides a summary of the actual dollar-based gains or losses for each asset and calculates the overall profit of the system. This table includes separate columns for profit excluding HODL and the combined total when HODL gains are included. As seen in the image below, this allows users to compare the performance of the active strategy against a passive buy-and-hold approach. The HODL profit percentage is derived from the Portfolio Value input, ensuring a clear comparison of accumulated returns.
4. Best Performing Asset Table
Focuses on the single highest-returning or highest-profit asset at that moment. It highlights the symbol, the asset’s cumulative returns, risk metrics, and other relevant stats. This helps identify which asset is currently outperforming the rest.
5. Most Profitable Asset
A simpler table that underscores the asset producing the highest absolute dollar profit across the portfolio.
------------------------------------------------------------------------
Multi Asset Selection
You can include up to ten different assets (such as BTCUSDT, ETHUSDT, ADAUSDT, and so on) in this script. Each asset has two inputs: one to enable or disable its inclusion, and another to select its trading pair symbol. Once you enable an asset, the script requests the relevant market data from TradingView.
------------------------------------------------------------------------
Uniqness and Features
1. Multiple Data Fetches
Each asset is pulled from the chart’s timeframe, along with various metrics such as RSI, volatility approximations, and trend indicators.
2. Various Risk and Performance Metrics
The script internally keeps track of different measures, like Sharpe ratio (a measure of average return adjusted for risk), Sortino ratio (which focuses on downside volatility), Omega ratio, and maximum drawdown. These metrics feed into the strategy allocation table, helping you quickly assess the risk-and-return profile of each asset.
3. Real-Time Tables
Instead of having to set up complex spreadsheets or external dashboards, the script updates all tables on every new bar. The color schemes in these tables are designed to draw attention to bullish or bearish signals, positive or negative returns, and so forth.
4. HODL Comparison
You can visually compare the active strategy’s results to a separate continuous buy-on-dips accumulation strategy. This allows for insight into whether your dynamic approach truly beats a simpler, more patient method.
5. Locking Allocations
The Use Fixed Allocation input is convenient for those who want to see how holding a fixed distribution of capital performs over time. It helps in distinguishing between constant rebalancing vs a fixed, set-and-forget style.
------------------------------------------------------------------------
How to use
1. Add the Script to Your Chart
Once added, open the settings panel to configure your asset list, choose a trading system, and select the diversification approach.
2. Select Assets
Pick up to ten symbols to monitor. Disable any you do not want included. Each included asset is then handled for signals, diversification, and performance metrics.
3. Choose Trading System
Decide if you prefer RSI-based signals, a fair-value approach, or a percentile-based method, among others. The script will then flag assets as bullish, bearish, or neutral according to that selection.
4. Pick a Diversification Method
For example, you might choose Trend-Following Indicators if you believe momentum stocks or cryptocurrencies will continue their trends. Or you could use the Omega Ratio approach if you want to reward assets that have had a favorable upside probability.
5. Set Portfolio Value and HODL Parameters
Enter how much capital you want to allocate in total (for the dynamic strategy) and adjust HODL buy quantities and thresholds as desired. (HODL Profit % is calculated from the Portfolio Value)
6. Inspect the Tables
On the chart, the script can display multiple tables showing your allocations, returns, risk metrics, and which assets are leading or lagging. Monitor these to make decisions about capital distribution or see how the strategy evolves.
------------------------------------------------------------------------
Additional Remarks
This script aims to simplify multi-asset portfolio management in a single tool. It emphasizes user-friendliness by color-coding the data in tables, so you do not need extra spreadsheets. The script is also flexible in letting you lock allocations or compare dynamic updates.
Always remember that no script can guarantee profitable outcomes. Real markets involve unpredictability, and real trading includes fees, slippage, and liquidity constraints not fully accounted for here. The script uses real-time and historical data for demonstration and educational purposes, providing a testing environment for various systematic strategies.
Performance Considerations
Due to the complexity of this script, users may experience longer loading times, especially when handling multiple assets or using advanced allocation methods. In some cases, calculations may time out if too many settings are adjusted simultaneously. If this occurs, removing and reapplying the indicator to the chart can help reset the process. Additionally, it is recommended to configure inputs gradually instead of adjusting all parameters at once, as excessive changes can extend the script’s loading duration beyond TradingView’s processing limits.
------------------------------------------------------------------------
Originality
This script stands out by integrating multiple asset management techniques within a single indicator, eliminating the need for multiple scripts or external portfolio tools. Unlike traditional single-asset strategies, it simultaneously evaluates multiple assets, applies systematic allocation logic, and tracks risk-adjusted performance in real time. The script is designed to function within TradingView’s script limitations while still allowing for complex portfolio simulations, making it an efficient tool for traders managing diverse holdings. Additionally, its combination of systematic trading signals with allocation-based diversification provides a structured approach to balancing exposure across different market conditions. The dynamic interplay between adaptive trading strategies and passive accumulation further differentiates it from conventional strategy indicators that focus solely on directional signals without considering capital allocation.
Conclusion
Uptrick: Portfolio Allocation Diversification pulls multiple assets into one efficient workflow, where each asset’s signal, volatility, and performance is measured, then assigned a share of capital according to your selected diversification method. The script accommodates both dynamic rebalancing and a locked allocation style, plus an ongoing HODL simulation for passive accumulation comparison. It neatly visualizes the entire process through on-chart tables that are updated every bar.
Traders and investors looking for ways to manage multiple assets under one unified framework can explore the different modules within this script to find what suits their style. Users can quickly switch among trading systems, vary the allocation approach, or review side-by-side performance metrics to see which method aligns best with their risk tolerance and market perspective.